1
我對Python非常陌生,我試圖習慣於執行Python的數組操作,而不是在數組中循環。下面是那種環接動作我做的一個例子,但我無法制定出不依賴於循環合適的純數組操作:使用多個相同數組索引的數組操作
import numpy as np
def f(arg1, arg2):
# an arbitrary function
def myFunction(a1DNumpyArray):
A = a1DNumpyArray
# Create a square array with each dimension the size of the argument array.
B = np.zeros((A.size, A.size))
# Function f is a function of two elements of the 1D array. For each
# element, i, I want to perform the function on it and every element
# before it, and store the result in the square array, multiplied by
# the difference between the ith and (i-1)th element.
for i in range(A.size):
B[i,:i] = f(A[i], A[:i])*(A[i]-A[i-1])
# Sum through j and return full sums as 1D array.
return np.sum(B, axis=0)
總之,我整合功能,有兩個相同數組的元素作爲參數,返回積分結果數組。
有沒有更緊湊的方式來做到這一點,而不使用循環?
現在閱讀起來比較容易。任何你想妥協的理由? – erip
我被一位資深Pythoneer告知:「不要使用循環來操作數組,使用數組操作。」顯然,如果這太過於妥協易讀性,我會堅持循環。 –
我想說一個更好的規則是「不要使用循環來操作數組,如果存在一個數組操作來執行你所需要的操作」。 – Kevin