2
で、このコードは動作します反復は、例えば、変数の列
import numpy as np
import numpy.random as rnd
a = rnd.randint(0,10,(10,10))
k = (1,2)
b = a[:,k]
for col in np.arange(np.size(b,1)):
b[:,col] = b[:,col]+col*100
このおもちゃコードのは、考えてみましょう、
a
から抽出された部分行列が行ベクトルに変換され、
for
ループの関数を適用するとエラーが発生します。列ベクトルを得るために
if np.dim(b) == 1:
b = np.reshape(b, (np.size(b), 1))
が、これは高価です:もちろん 、私はb
の大きさをチェックし、再形成することにより、これを修正することができます。
質問:この状況を処理する最善の方法は何ですか? これはかなり頻繁に起きるようなものだと思うし、それに対処する最良の戦略は何か疑問だ。
「b.shape =(np.size(b)、1)」を使用すると、データの中間コピーや再割当てを行わずに済むため、再構成は安価です。 – Julien