4

I can sum all the elements along a specific axis, using numpy.sum, that is

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

That is sum along row, which add elements of each column one by one.

If there are only 2 or 3 axes, I could implement it using if...elif or swith...case in C/C++, but what if there are 100 axes? How to implement it?

4

1 回答 1

2

Numpy 数组只是引擎盖下的一维 C 数组,因此沿着单轴步进是通过跨步跳过 C 数组来实现的,步长的大小取决于您正在迭代的维度(最小的步幅最快维度,在 Python/C 中将是最后一个维度)。

因此,您必须计算与轴对应的步幅,然后在计算总和时逐步遍历数组。对于每个总和,您从数组中的一个偏移量开始(第一个偏移量为 0),该偏移量随着另一个步长的增加而增加。

如果您想了解更多信息,可以阅读 numpy 指南的第 15 章(实际上不需要阅读所有前面的内容),该指南从 C 语言中的 numpy 数组迭代部分开始。

于 2013-06-27T13:02:19.120 回答