NumPy-布尔索引

布尔索引

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]]

posted @ 2019-10-21 23:02  chanyuli  阅读(623)  评论(0编辑  收藏  举报