python - `along a specific axis`操作是如何实现的?

标签 python numpy

我可以使用 numpy.sum 沿特定轴对所有元素求和,即

>>> a = numpy.array([[1,2], [3,4]])
>>> numpy.sum(a, 1)
array([3, 7])

sum along row,将每一列的元素逐一相加。

如果只有 2 或 3 个轴,我可以在 C/C++ 中使用 if...elifswith...case 来实现它,但是如果有100个轴?如何实现?

最佳答案

Numpy 数组实际上只是一维 C 数组,因此沿着单个轴的步进是通过大步跳过 C 数组来实现的,步幅的大小取决于你迭代的维度(最小步幅对于最快的维度,在 Python/C 中将是最后一个维度)。

所以你就得先计算轴对应的步幅,然后在求和的同时单步遍历数组。对于每个总和,您从数组中的一个偏移量开始(第一个为 0),该偏移量随着另一个步长而增加。

如果您想了解更多信息,可以阅读 guide to numpy 的第 15 章(不需要阅读之前的所有内容) ,它以在 C 中完成的关于 numpy 数组迭代的部分开始。

关于python - `along a specific axis`操作是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316491/

相关文章:

python - 如何将 "print"发送到 pylons 中的控制台?

python - 如何为 property() 设置函数?

python - 无法从其他模块追加全局 NumPy 数组

python - PIL 图像转换为 RGB,保存为纯黑色图像(python)

python - 迭代从函数返回的可迭代元组

python - django 中的强制语言代码

python - 如何在Python中打印变量和字符串之间没有空格

python - numpy.linalg.solve 和 numpy.linalg.lu_solve 之间的区别

python - MATLAB 上的索引矩阵行和列,这段代码可以吗?

python - 了解 xarray.apply_ufunc