我可以使用 numpy.sum
沿特定轴对所有元素求和
,即
>>> a = numpy.array([[1,2], [3,4]])
>>> numpy.sum(a, 1)
array([3, 7])
即sum along row
,将每一列的元素逐一相加。
如果只有 2 或 3 个轴,我可以在 C/C++ 中使用 if...elif
或 swith...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/