将函数应用于3D numpy数组中的向量

时间:2014-07-22 11:56:05

标签: python numpy

我有一个关于如何将函数应用于3D numpy数组中的向量的问题。 我的问题如下:让我说我有一个像这样的数组:

a = np.arange(24)
a = a.reshape([4,3,2])

我想将一个函数应用于所有后面的向量来修改它们:

[0 6], [1 7], [2 8], [4 10], [3 9] ...

最好的使用方法是什么?因为我的数组非常大,所以在三个维度中的两个循环很长...

提前致谢!

1 个答案:

答案 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次。