NumPy配列の2番目と3番目から5番目の列を抽出したいのですが、どうすればよいですか?
A = array([[0, 1, 2, 3, 4, 5, 6], [4, 5, 6, 7, 4, 5, 6]])
A[:, [1, 4:6]]
これは明らかに機能しません。
私があなたを理解していると仮定すると-それは明白ではないので、通常はあなたが望む出力を明示的に指定することは良い考えです-あなたはnumpy.r_を使うことができます:
In [27]: A
Out[27]:
array([[0, 1, 2, 3, 4, 5, 6],
[4, 5, 6, 7, 4, 5, 6]])
In [28]: A[:, [1,3,4,5]]
Out[28]:
array([[1, 3, 4, 5],
[5, 7, 4, 5]])
In [29]: A[:, r_[1, 3:6]]
Out[29]:
array([[1, 3, 4, 5],
[5, 7, 4, 5]])
In [37]: A[1:, r_[1, 3:6]]
Out[37]: array([[5, 7, 4, 5]])
その後、好きなように平らにしたり、形を変えたりすることができます。 r_
基本的には、適切なインデックスを生成するための便利な関数です。
In [30]: r_[1, 3:6]
Out[30]: array([1, 3, 4, 5])
おそらくあなたはこれを探していますか?
In [10]: A[1:, [1]+range(3,6)]
Out[10]: array([[5, 7, 4, 5]])
これにより、最初の行を除くすべての行の2番目、4番目、5番目、および6つの列が得られることに注意してください。
2番目の要素はA[:,1]
です。要素3〜5(包括的であると想定しています)はA[:,2:5]
です。1回の呼び出しでそれらを抽出することはできません。それらを配列として取得するには、次のようにします。
import numpy as np
A = np.array([[0, 1, 2, 3, 4, 5, 6], [4, 5, 6, 7, 4, 5, 6]])
my_cols = np.hstack((A[:,1][...,np.newaxis], A[:,2:5]))
重要なのは、と整合性のある2D配列np.newaxis
を作成することだけです。A[:,1]
A[:,2:5]
お役に立てれば。