2013-05-30 41 views
1

當i執行以下操作:numpy的數據對齊切片

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' 

該命令打印所有的 「0列」 值 「X」 表示具有相關聯的「 y「值等於​​。這怎麼可能?也就是說,numpy如何跟蹤「x」和「y」之間的對齊關係?我認爲numpy沒有數據對齊。

回答

0

當你做y == 'y10ut'ydtype字符串,返回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的不知道xy之間的關係。但考慮到條件y == 'y10ut',它會根據它的索引x的第一維,這似乎是你想要的。