私は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)
、私は2つを取る機能を統合しています引数と同じ配列の要素を返し、積分の結果の配列を返します。
ループを使用せずにこれを行うコンパクトな方法はありますか?
これは比較的簡単に読むことができます。あなたがそれを妥協する理由は何ですか? – erip
私はベテランPythoneerによって「配列を操作するためにループを使用せず、配列操作を使用する」と言われています。明らかにこれが読みやすさをあまりにも妥協するならば、私はループに固執するでしょう。 –
私は、より良いルールは、 "配列を操作するためにループを使用しないで、必要な操作を行う配列操作が存在する"と言います。 – Kevin