1

私は次のことを行います:

from numpy import genfromtxt

x = genfromtxt('foo.csv',delimiter=',',usecols=(0,1))

y = genfromtxt('foo.csv',delimiter=',',usecols=(2),dtype=str)

次に、次のように入力します。

x[y=='y1Out',0] # assume the set of "y" is 'y1Out' and 'y2Out'

このコマンドは、関連する「y」値が に等しい「x」の「0 列」の値をすべて出力しますy1Out。これはどのように可能ですか?つまり、numpy は "x" と "y" の間の位置合わせをどのように追跡しますか? numpy にはデータの配置がないと思いました。

4

1 に答える 1

0

y == 'y10ut'andyが文字列の配列の場合、numpy は条件が満たされた場所のdtypeインデックスを含むブール配列を返します。y例えば:

import numpy as np
y = np.empty(10, dtype='S8')
# populating the array with 'y10ut' and 'y20ut' alternatively
y[1::2] = 'y10ut'
y[::2] = 'y20ut'

次に、条件を評価できます。

>>> y == 'y10ut'
array([False,  True, False,  True, False,  True, False,
       True, False,  True], dtype=bool)

そして、この結果の配列は、 のインデックス配列として使用できますxyが文字列の配列でない場合、結果の評価はもはやインデックス配列ではないことに注意してください。

>>> y = np.arange(5, dtype='f')
>>> y == 'y10ut'
False

あなたの場合、 numpy は と の関係を知りませxy。しかし、条件が与えられるy == 'y10ut'と、それに従って最初の次元にインデックスが付けられxます。これは、あなたが望むものと思われます。

于 2013-05-31T07:39:19.297 に答える