2014-07-22 28 views
0

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

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

我想要的功能适用于所有下述载体对它们进行修改:

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

什么是最好的方法使用?由于我的阵列相当大,在三维中的两个循环是相当长的...

在此先感谢!

回答

1

您可以使用功能np.apply_along_axis。从doc

将函数应用于沿给定轴的一维切片。

例如:

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

+0

这些似乎不是OP正在寻找的载体。 –

+0

谢谢,我会试试看! – Haddock

相关问题