如何实现“沿特定轴”操作?

时间:2013-06-26 09:35:42

标签: python numpy

我可以sum使用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个轴呢?如何实现呢?

1 个答案:

答案 0 :(得分:2)

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

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

如果你想了解更多,你可以阅读guide to numpy的第15章(不需要阅读以前的所有内容),它以numpy数组迭代的一节开头,因为它完成了在C.