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'

该命令打印“x”中的所有“0 列”值,其关联的“y”值等于y1Out. 这怎么可能?也就是说,numpy 如何跟踪“x”和“y”之间的对齐?我认为 numpy 没有数据对齐。

4

1 回答 1

0

当您执行y == 'y10ut'并且y是一个dtype字符串数组时,numpy 返回一个布尔数组,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)

这个结果数组可以用作 的索引数组x。请注意,如果y不是字符串数组,则结果评估不再是索引数组:

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

在您的情况下,numpy 不知道 and 之间的x关系y。但是给定条件y == 'y10ut',它会根据它索引第一个维度x,这似乎是你想要的。

于 2013-05-31T07:39:19.297 回答