(内容来自《利用Python进行数据分析》)
先创建一个names一维数组,再用numpy.random中的randn函数生成一个7*4数组:
>>names=np.array(["Bob","Joe","Will","Bob","Will","Joe","Joe"])
>>data=np.random.randn(7,4)
1.对names和字符串“Bob”的比较运算将会产生一个布尔型数组:
>>> names=="Bob"
array([ True, False, False, True, False, False, False], dtype=bool)
2.将这个布尔型数组用于数组索引:
>>> data[names=="Bob"]
array([[ 0.10298484, -0.25113445, -0.78464202, -0.54631363],
[ 0.28620158, 0.1481723 , -1.27040048, 0.29133364]])
3.将布尔型数组跟切片混合使用:
>>> data[names=="Bob",2:]
array([[-0.78464202, -0.54631363],
[-1.27040048, 0.29133364]])
4.也可用不等号(!=),负号对条件进行操作:
>>> names!="Bob"
array([False, True, True, False, True, True, True], dtype=bool)
>>> data[-(names=="Bob")]
array([[-0.46722746, -0.4769322 , 0.94609687, 0.51213101],
[-1.34277909, 0.76173316, -0.8811425 , -0.88740766],
[-0.17423198, 0.46599401, 0.21391178, 0.09850381],
[-0.37063907, -0.88720874, 0.85973078, 1.22438856],
[ 0.67792587, 0.259653 , 1.11855236, 1.50720749]])
5.多种条件组合(&,|等)
>>> data[(names=="Bob")|(names=="Will")]
array([[ 0.10298484, -0.25113445, -0.78464202, -0.54631363],
[-1.34277909, 0.76173316, -0.8811425 , -0.88740766],
[ 0.28620158, 0.1481723 , -1.27040048, 0.29133364],
[-0.17423198, 0.46599401, 0.21391178, 0.09850381]])
6.为了将data中的所有负值都设置为0,只需:
>>> data[data<0]=0
>>> data
array([[ 0.10298484, 0. , 0. , 0. ],
[ 0. , 0. , 0.94609687, 0.51213101],
[ 0. , 0.76173316, 0. , 0. ],
[ 0.28620158, 0.1481723 , 0. , 0.29133364],
[ 0. , 0.46599401, 0.21391178, 0.09850381],
[ 0. , 0. , 0.85973078, 1.22438856],
[ 0.67792587, 0.259653 , 1.11855236, 1.50720749]])