布尔索引
numpy.random.randn(7,4):生成一个7 * 4的随机正态分布的数据。
names = np.array(['bob', 'joe','will', 'bob', 'will', 'joe', 'joe'] )
data = np.random.randn(7,4)#生成一个七乘四的随机正态分布数组
print(names)
print(data)
print(names == 'bob')
print(data[names == 'bob'])
#注意,布尔值数组的长度必须和数组轴索引长度一致。 当布尔值数组的长度不正确时,布尔值选择数据的方法并不会报错,因此用的时候要非常小心
print('------------')
print(data[names == 'bob', 2:]) #通过索引取值,判断完之后的值
print('-----------')
print(data[names == 'bob', 3])
print('---------')
print(names != 'bob')
print("------------")
# ~符号表示可以在你想要对一个通用条件进行取反时使用。
print(data[~(names == 'bob')])
print('---------------')
#Python的关键字 and 和 or 队伍而直属组没有用,想要对多个布尔值条件进行联合的时候,需要用的数学操作符是 &(and)和 |(or)
mask = (names == 'bob')|(names == 'will')
print(mask)
print(data[mask])
print('------------')
# 基于常识来设置布尔值数组的值也是可行的,将data中的所有的负值设置为0.
data[data<0]=0
print(data)
print('------------')
# 通过判断 names是否不等于 joe 来获取一个布尔值数组,再传入,然后改值。
data[names != 'joe'] = 7
print(data)
['bob' 'joe' 'will' 'bob' 'will' 'joe' 'joe']
[[-1.32440208 -0.45427327 -1.63787067 1.80459809]
[ 1.16594353 -0.50247966 0.6491378 1.05965126]
[ 1.81587214 -1.24082676 0.4214128 0.27463189]
[ 0.10547611 -1.448572 1.8764057 1.39618769]
[ 1.03137488 -1.10790614 -0.51666423 0.38906515]
[ 0.52641389 -0.4301804 0.03157491 0.37656666]
[ 0.11827433 1.458692 0.42525599 0.39651743]]
[ True False False True False False False]
[[-1.32440208 -0.45427327 -1.63787067 1.80459809]
[ 0.10547611 -1.448572 1.8764057 1.39618769]]
------------
[[-1.63787067 1.80459809]
[ 1.8764057 1.39618769]]
-----------
[1.80459809 1.39618769]
---------
[False True True False True True True]
------------
[[ 1.16594353 -0.50247966 0.6491378 1.05965126]
[ 1.81587214 -1.24082676 0.4214128 0.27463189]
[ 1.03137488 -1.10790614 -0.51666423 0.38906515]
[ 0.52641389 -0.4301804 0.03157491 0.37656666]
[ 0.11827433 1.458692 0.42525599 0.39651743]]
---------------
[ True False True True True False False]
[[-1.32440208 -0.45427327 -1.63787067 1.80459809]
[ 1.81587214 -1.24082676 0.4214128 0.27463189]
[ 0.10547611 -1.448572 1.8764057 1.39618769]
[ 1.03137488 -1.10790614 -0.51666423 0.38906515]]
------------
[[0. 0. 0. 1.80459809]
[1.16594353 0. 0.6491378 1.05965126]
[1.81587214 0. 0.4214128 0.27463189]
[0.10547611 0. 1.8764057 1.39618769]
[1.03137488 0. 0. 0.38906515]
[0.52641389 0. 0.03157491 0.37656666]
[0.11827433 1.458692 0.42525599 0.39651743]]
------------
[[7. 7. 7. 7. ]
[1.16594353 0. 0.6491378 1.05965126]
[7. 7. 7. 7. ]
[7. 7. 7. 7. ]
[7. 7. 7. 7. ]
[0.52641389 0. 0.03157491 0.37656666]
[0.11827433 1.458692 0.42525599 0.39651743]]