我读了一本关于使用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])在此之前,这是非常清楚的。但我不能理解当他们做数据名称== 'Bob‘
>>> 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]])这是怎么发生的?
发布于 2019-11-11 06:32:37
data[names == 'Bob']
与以下内容相同:
data[[True, False, False, True, False, False, False]]
这仅仅意味着从data获取行0和行4。
data[names == 'Bob',2:]
提供相同的行,但现在将列限制为从第2列开始。在逗号之前表示行,在逗号之后表示列。
https://stackoverflow.com/questions/58792665
复制相似问题