0
2次元numpy配列内の1つの要素だけを削除する方法はありますか?numpy配列から単一の要素(行/列全体ではない)を削除する
たとえば、のは、私が持っているとしましょう: x = np.array([[1, 2], [3, 4]])
と私はちょうどnp.array([[1], [3, 4]])
を保存するために、xの新しいバージョンが欲しいです。
これは実行可能ですか?リスト操作として
2次元numpy配列内の1つの要素だけを削除する方法はありますか?numpy配列から単一の要素(行/列全体ではない)を削除する
たとえば、のは、私が持っているとしましょう: x = np.array([[1, 2], [3, 4]])
と私はちょうどnp.array([[1], [3, 4]])
を保存するために、xの新しいバージョンが欲しいです。
これは実行可能ですか?リスト操作として
これは単純です:
In [328]: x = np.array([[1, 2], [3, 4]])
だけで目的の要素削除するlist
del
を使用します。それが戻って配列に変換することができます
In [337]: xl=x.tolist()
In [338]: idx=(0,1)
In [339]: del xl[idx[0]][idx[1]]
In [340]: xl
Out[340]: [[1], [3, 4]]
を - しかし、それは意志ギザギザしているので、リストの配列:
In [341]: np.array(xl)
Out[341]: array([[1], [3, 4]], dtype=object)
あなたはLDは、アレイの平坦化されたバージョンから、この要素を削除するためにnp.delete
を使用して:あなたは2次元配列に戻ることはできません
In [343]: np.ravel_multi_index(idx,x.shape)
Out[343]: 1
In [344]: np.delete(x,np.ravel_multi_index(idx,x.shape))
Out[344]: array([1, 3, 4])
。
In [345]: np.split(_,[1])
Out[345]: [array([1]), array([3, 4])]
分割インデックスを計算することは、一般的には少し面倒です。
AFAIK新しい配列を作成する必要があります。 – Divakar
実際、 'np.array([[1]、[3、4]])'を入力しようとしましたか?私はそれが不可能であると確信しています。それを平坦化し、リンクされた複製に記述されている方法を使用して不要な要素を削除します。 – TigerhawkT3
それは間違った重複です。これは1d配列ではありません。 'np.delete'は動作しません。実際には、このようなことはありません。 – hpaulj