1

NumPy配列の2番目と3番目から5番目の列を抽出したいのですが、どうすればよいですか?

A = array([[0, 1, 2, 3, 4, 5, 6], [4, 5, 6, 7, 4, 5, 6]])
A[:, [1, 4:6]]

これは明らかに機能しません。

4

3 に答える 3

5

私があなたを理解していると仮定すると-それは明白ではないので、通常はあなたが望む出力を明示的に指定することは良い考えです-あなたは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])
于 2012-10-17T11:13:19.270 に答える
1

おそらくあなたはこれを探していますか?

In [10]: A[1:, [1]+range(3,6)]
Out[10]: array([[5, 7, 4, 5]])

これにより、最初の行を除くすべての行の2番目、4番目、5番目、および6つの列が得られることに注意してください。

于 2012-10-17T11:04:59.623 に答える
0

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]

お役に立てれば。

于 2012-10-17T11:06:51.963 に答える