我有一个关于如何将函数应用于3D numpy数组中的向量的问题。 我的问题如下:让我说我有一个像这样的数组:
a = np.arange(24)
a = a.reshape([4,3,2])
我想将一个函数应用于所有后面的向量来修改它们:
[0 6], [1 7], [2 8], [4 10], [3 9] ...
最好的使用方法是什么?因为我的数组非常大,所以在三个维度中的两个循环很长...
提前致谢!
答案 0 :(得分:1)
您可以使用功能np.apply_along_axis
。来自doc:
将函数应用于给定轴的1-D切片。
例如:
>>> import numpy as np
>>> a = np.arange(24)
>>> a = a.reshape([4,3,2])
>>>
>>> def my_func(a):
... print "vector: " + str(a)
... return sum(a) / len(a)
...
>>> np.apply_along_axis(my_func, 0, a)
vector: [ 0 6 12 18]
vector: [ 1 7 13 19]
vector: [ 2 8 14 20]
vector: [ 3 9 15 21]
vector: [ 4 10 16 22]
vector: [ 5 11 17 23]
array([[ 9, 10],
[11, 12],
[13, 14]])
在上面的示例中,我使用了第0轴。如果您需要n
个轴,则可以执行此功能n
次。