2017-01-21 5 views
0

2次元numpy配列内の1つの要素だけを削除する方法はありますか?numpy配列から単一の要素(行/列全体ではない)を削除する

たとえば、のは、私が持っているとしましょう: x = np.array([[1, 2], [3, 4]])

と私はちょうどnp.array([[1], [3, 4]])を保存するために、xの新しいバージョンが欲しいです。

これは実行可能ですか?リスト操作として

+0

AFAIK新しい配列を作成する必要があります。 – Divakar

+1

実際、 'np.array([[1]、[3、4]])'を入力しようとしましたか?私はそれが不可能であると確信しています。それを平坦化し、リンクされた複製に記述されている方法を使用して不要な要素を削除します。 – TigerhawkT3

+0

それは間違った重複です。これは1d配列ではありません。 'np.delete'は動作しません。実際には、このようなことはありません。 – hpaulj

答えて

0

これは単純です:

In [328]: x = np.array([[1, 2], [3, 4]]) 

だけで目的の要素削除するlistdelを使用します。それが戻って配列に変換することができます

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])] 

分割インデックスを計算することは、一般的には少し面倒です。

関連する問題