wvgw1692
@wvgw1692 (spwv)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

[Python] numpy配列のインデックスを考慮した処理について

解決したいこと

numpy配列のインデックスの値を考慮した配列計算を効率よく行いたいです。

例)
配列Aに対し、行方向のインデックスの値^2を要素に加算する

配列A
A = [1,1,1,1,1]
処理後
A = [1,2,5,10,17] 

自分で試したこと

加算する値を別の配列(add)で計算し、Aに加算することで計算しました。
しかし、処理のたびに別の配列を作成するよりもっと効率の良いやり方があるのではないかと感じています。
配列Aのみで完結する等、下記よりもスマートなやり方がありましたらご教授ください...

Python
import numpy
A = numpy.array((1,1,1,1,1))
add = numpy.square(numpy.arange(len(a)))
A += add
print(A)
0

1Answer

上で書かれているように,np.square(np.arange(len(A)))とされた時点で加算する値は生成されているので,これ以上簡潔にするとなると,変数addへの代入を省いて以下のようにするしかないかと思います.

A = np.array([1, 1, 1, 1, 1])
A += np.square(np.arange(len(A)))

示していただいた量のコードであれば変数addに格納する必要はありませんが,インデックスの値を利用した配列計算においてaddのような値の再利用の可能性があるなら格納しておくのも一手です.

他に挙げるとしても

A = [1, 1, 1, 1, 1]
A = np.array(A) + np.square(np.arange(len(A)))

ぐらいでしょうか.

1Like

Your answer might help someone💌