2
我有一個數組表示3D點之間的函數。因此,作爲索引它獲得6元組。現在我想對這個數組的元素應用一個函數,但是這個函數不僅依賴於元素的值,還依賴於它的索引。因此,如果A
是矩陣,以及m和n是我們的3D點即A [M,N]存儲其值,而k是0和3然後f(A,k)[m,n]
之間的值等於:基於索引函數的向量化數組操作
- m[k]**2
如果m==n
- m[k]**2-n[k]**2
否則
以下是我的代碼:
import numpy as np
def func(a,k):
b=np.empty(a.shape)
for i in range(a.flatten().size):
ind=np.unravel_index(i,a.shape)
if ind[0:3]==ind[3:6]:
b[ind]=a[ind]*ind[0:3][k]**2
else:
b[ind]=a[ind]*(ind[0:3][k]**2-ind[3:6][k]**2)
return b
a=np.arange(729).reshape((3,3,3,3,3,3))
print func(a,2)
反正是有vecotrizing這個代碼?
P.S.這是我實際需要做的簡化版本。