Numpy中涉及两个数组的布尔索引

Numpy中涉及两个数组的布尔索引,numpy,Numpy,我在读一本关于Python数据分析的书,书中有一个关于布尔索引的主题 这是书中给出的代码: >>> import numpy as np >>> names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe']) >>> data = np.random.randn(7,4) >>> names array(['Bob', 'Joe', 'Will',

我在读一本关于Python数据分析的书,书中有一个关于布尔索引的主题

这是书中给出的代码:

>>> import numpy as np
>>> names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
>>> data = np.random.randn(7,4)
>>> names
array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'], dtype='<U4')
>>> data
array([[ 0.35214065, -0.6258314 , -1.18156785, -0.75981437],
       [-0.54500574, -0.21700484,  0.34375588, -0.99216205],
       [ 0.29883509, -3.08641931,  0.61289669,  0.58233649],
       [ 0.32047465,  0.05380018, -2.29797299,  0.04553794],
       [ 0.35764077, -0.51405297, -0.21406197, -0.88982479],
       [-0.59219242, -1.87402141, -2.66339726,  1.30208623],
       [ 0.32612407,  0.19612659, -0.63334406,  1.0275622 ]])
>>> names == 'Bob'
array([ True, False, False,  True, False, False, False])

这是怎么发生的?

data[names=='Bob']

同:

数据[[True,False,False,True,False,False]]

这意味着从
数据中获取第0行和第4行

data[name=='Bob',2::


提供相同的行,但现在限制列以列2开头。逗号前表示行,逗号后表示列。

data[names==“Bob']

同:

数据[[True,False,False,True,False,False]]

这意味着从
数据中获取第0行和第4行

data[name=='Bob',2::


提供相同的行,但现在限制列以列2开头。逗号前表示行,逗号后表示列。

您阅读并理解了吗?
名称=='Bob'
索引相当于使用列表(或数组)进行索引,例如
[0,3]
。所以它选择第0行和第3行。第二个版本选择了第2列和下面的列。您阅读并理解了吗?
names=='Bob'
索引相当于使用列表(或数组)进行索引,例如
[0,3]
。所以它选择第0行和第3行。第二个版本选择了第2列和下面的列。这回答了你的问题吗?这回答了你的问题吗?
>>> data[names == 'Bob']
array([[ 0.35214065, -0.6258314 , -1.18156785, -0.75981437],
       [ 0.32047465,  0.05380018, -2.29797299,  0.04553794]])
>>> data[names == 'Bob', 2:]
array([[-1.18156785, -0.75981437],
       [-2.29797299,  0.04553794]])