異なるサイズの2つの1次元配列XとYがあります。異なるサイズの配列Yを持つ条件に基づくnumpyマスク配列X
X=np.array([0.3, 2.1, 4.3])
Y=np.array([1.5, 3.5])
mask = X>Y[:,np.newaxis]
をし、その上例えばにつながるように、今私は、X[mask]=X[mask]+1
似た何かを実行したいと思います:私は、例えばXとYの条件から生じた2次元の配列を作成しようとしています:
newX = np.array([0.3, 3.1, 5.3],[0.3, 2.1, 5.3]])
私が行うことで、この結果を得ることができた:
newX = np.append(X, X).reshape(2,3)
newX[mask]=newX[mask]+1
しかし、これはY配列(例2)の長さをハードコードし、そしてどのnp.appendとコピーが含まれX ad Yが実際に大きな配列である場合(そしてそれはおそらくかなり醜い)、コストがかかる。これを行う正しい方法はありますか?つまり、ブール値を数値コンテキストでint型として扱われます - あなたはmask
がTrueでどこ1を追加したい、この特定のケースでは、 おそらく最も簡単な方法は、放送を利用して プロモーションをDTYPEする
私はちょうど "enter"を押した直後にnp.outerを呼び出したので、少なくともこれはハードコードを取り除きます: 'newX = np.outer(np.ones_like(Y)、X)'しかし、私はまだ分かりませんこれを行うのが最も効率的で正しい方法です。 –