17

重複の可能性:
numpy:列ごとに配列にアクセスします

numpy配列があります(numpyはnpとしてインポートされます)

gona = np.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

gona [1] [:]で1行目の列全体の値を取得できます。

array([4、5、6])

しかし、すべての行の特定の列のすべての値を取得しようとすると(たとえば、すべての行の最初の列の値が必要な場合)、gona [:][1]を試してみます。しかし、これから得られる結果は以前と同じです。

これの理由は何でしょうか?どうすればそのようなことをnumpyで行うことができますか?

4

3 に答える 3

40

あなたは実際にこれをしたいです:

>>> a
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> a[:,1]
array([ 2,  5,  8, 11])

a[:]配列全体を返すだけなので、はのa[:][1]2番目の行を返しますa。それがあなたの混乱が生じるところだと思います。

多次元配列のインデックス作成の詳細については、 TentativeNumpyチュートリアルのこのセクションを参照してください。

于 2013-02-01T16:26:51.717 に答える
9

中括弧の配置に関して少し混乱しているようです。gona[:][1]最初に配列からすべてを選択し、次にその配列から 2 番目の行を選択します。特定の列を選択するには、カンマで区切られた同じ角括弧内にインデックスを配置します。

gona = np.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

gona[1,:]
Out[21]: array([4, 5, 6])

gona[:,1]
Out[22]: array([ 2,  5,  8, 11])

gona[:,0]
Out[23]: array([ 1,  4,  7, 10])

たとえば、行の範囲を選択することもできます

gona[0:2,0] # only take the two first rows of the first column
Out[24]: array([2, 5])
于 2013-02-01T16:30:50.170 に答える
0

このような:

gona = numpy.array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

# List comprehension, just get each element in 'gona', and then get first element in that list
out = [x[0] for x in gona]

print out

出力:

>>> 
[1, 4, 7, 10]
>>> 
于 2013-02-01T16:22:36.143 に答える