2014-07-22 26 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

相關問題