1次元numpy配列のすべての要素に対して同時に作用する関数を定義できるので、配列をループオーバーする必要はありません。たとえば、配列のすべての要素をループせずに四角形にすることができます。numpy配列のすべての要素に作用する関数?
:出力のようなものであるようにA = np.array([ [1,4,2], [5,1,8], [2,9,5], [3,6,6] ])
def F(Z):
return Z[0] + Z[1] - Z[2]
print F(A)
:ようなもので
>>> array([3, -2, 6, 3])
:
A = np.array([ [1,4,2], [5,1,8], [2,9,5], [3,6,6] ])
B = []
for i in A:
B.append(i[0] + i[1] - i[2])
B = array(B)
print B
出力:私は後だものの例では、このコードを交換することです
>>> array([ [3] , [-2], [6], [3] ])
私は第2コードwを知っています私が後にしていることを生み出すことはできませんが、私が話していることのアイデアを伝えようとしています。ありがとう!
編集:
私は上記の関数を単純な例として使用しました。
from numpy import linalg as LA
def F(Z):
#Z is an array of matrices
return LA.eigh(Z)[0]
だから私は、3×3行列の配列を持っている、と私は彼らの固有値の出力配列をたい:私が使用したいのですが、実際の機能は次のようなものです。そして、配列をループする必要がないように、いくつかの方法でこれを行うことが可能かどうかは疑問です。
スライスが役立つかもしれない:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing – Divakar
'B = A [:、0] + A [:, 1] - A [:、2] '? (あなたが '[2]'ではなく 'i [2]を意味していると仮定します。)あるいは' np.dot'を使うこともできます:基本的に行列ごとの乗算をここで行います。 –
'numpy'は、既に1つまたは複数の配列のすべての要素に対して機能する基本的な関数セットを定義しています。効率的な 'numpy'コードは、これらの機能を組み合わせています。それには、「並行」なビルディングブロックがたくさんあると考えてください。それらを「シリアル」思考(「スカラー」関数のルーピング)に戻す前に使ってみてください。 – hpaulj