「複雑な数学」をベクトル化できるかどうか、それが1行か複数かどうかによって異なります。それはベクトル化し、より複雑なソリューションであり、いくつかの行を、取ることができない場合、あなたはこのような何か行うことができます。この例では
b = np.zeros_like(a)
for i, ai in enumerate(a):
b[i] = some_complicated_math(ai)
c = a*b
を、i
はa
とai
の現在のインデックスが時の値でありますそのインデックス(a[i]
に相当)。 enumerate
には値とその(1D)インデックスが表示されます。 numpy配列での乗算は自動的に要素単位で行われます。
「複雑な数学は」ベクトル化することはできませんが、1本のライン上で行うことができるならば、あなたはこのような何か行うことができます。この場合
b = [some_complicated_math(ai) for ai in a]
c = a*b
をb
リスト(ないnumpyの配列)でありますしかし、pythonはnum37の配列a
で乗算されているので、b
を背後のnumpy配列に変換するほどスマートです。後で必要な場合はnp.array(b)
を使用してb
をnumpy配列に変換できます。
最も単純なシナリオは、「複雑な数学」をベクトル化できる場合です。次に、あなただけ行うことができます。
b = some_complicated_math(a)
c = a*b
どんな理由であれ、あなたは(b
参照c
何とかならば私は考えることができる唯一の理由は次のようになります)ループ内でb
とc
を配置する必要があり、場合は、行うことができますこの:
b = np.zeros_like(a)
c = np.zeros_like(a)
for i, ai in enumerate(a):
b[i] = some_complicated_math(ai)
c[i] = a[i]*b[i]
あなたは[外積](https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.cross.html)または[ドットを探しています製品](https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html)? –
... [要素別の製品](https://docs.scipy.org/doc/numpy/reference/generated/numpy.multiply.html)? –
@FredLarsonが提供された擬似コードで判断すると、それは要素単位( 'c(i)= a(i)* b(i)')になります。 – Uriel