您的位置:首页 > 编程语言 > Python开发

初学Numpy(三)

2015-10-08 15:40 453 查看
布尔型索引

#!/usr/bin/env python
#-*-coding:utf-8-*-
'''
Description:初学numpy(三)--布尔型索引
Created on 2015年10月8日
@author: zenwan
@version:
'''
import numpy as np
from pprint import pprint

names = np.array(['beijing','anhui','shanghai','jiangsu','zhejiang','shanghai','anhui'])#有重复
data = np.random.randn(7,4)#生成正态分布的随机数
pprint(names)
pprint(data)

'''
假设names中的每个名字对应data数组中的一行,而我们想要选出对应于名字'shanghai'的所有行。
我们想要选出对应于'shanghai'的所有数据行.
跟算术运算一样,数组的比较运算(如==)也是矢量化的,因此数组names和字符串'shanghai'比较运算会产生一个布尔型数组arr_bool,
这个布尔型数组可以用于素组索引
'''
arr0_bool = (names == 'shanghai')#数组跟字符串比较运算会产生一个布尔型的数组
pprint (arr0_bool) #array([False, False,  True, False, False,  True, False], dtype=bool)
pprint (data[arr0_bool])

#将布尔型数组跟切片、整数、整数序列等混合使用
pprint(data[names == 'shanghai',2:])
pprint(data[names == 'shanghai',3])

#选择'shanghai'以外的其它值等其它组合
arr1_bool =(names != 'shanghai')
arr2_bool =((names != 'shanghai')|(names=='jiangsu'))
arr2_bool =((names != 'shanghai')&(names=='jiangsu'))

#将data中所有的正数设为-1
data[data > 0] = -1#数组的比较运算是矢量化的
pprint (data)

#通过一维布尔型数组设置证行或者列,如将'shanghai'的所对应的整行数据设置为0
data [names =='shanghai'] = 0
pprint(data)


运行结果:

array(['beijing', 'anhui', 'shanghai', 'jiangsu', 'zhejiang', 'shanghai',
'anhui'],
dtype='|S8')
array([[ 0.84608482,  0.51050985, -0.43504218, -1.08530829],
[ 0.51865817, -1.0914367 , -0.6953841 , -1.59947846],
[-0.9308739 , -0.2748063 , -0.410821  , -1.66078485],
[ 0.2290689 , -0.85357479, -0.42896687,  0.97397006],
[-0.60247776, -0.24399895, -1.03297297, -0.76709796],
[-0.31226921, -0.42020231,  1.12008391,  0.54366616],
[ 0.53271514,  0.50497622,  1.02203728, -0.12969158]])
array([False, False,  True, False, False,  True, False], dtype=bool)
array([[-0.9308739 , -0.2748063 , -0.410821  , -1.66078485],
[-0.31226921, -0.42020231,  1.12008391,  0.54366616]])
array([[-0.410821  , -1.66078485],
[ 1.12008391,  0.54366616]])
array([-1.66078485,  0.54366616])
array([[-1.        , -1.        , -0.43504218, -1.08530829],
[-1.        , -1.0914367 , -0.6953841 , -1.59947846],
[-0.9308739 , -0.2748063 , -0.410821  , -1.66078485],
[-1.        , -0.85357479, -0.42896687, -1.        ],
[-0.60247776, -0.24399895, -1.03297297, -0.76709796],
[-0.31226921, -0.42020231, -1.        , -1.        ],
[-1.        , -1.        , -1.        , -0.12969158]])
array([[-1.        , -1.        , -0.43504218, -1.08530829],
[-1.        , -1.0914367 , -0.6953841 , -1.59947846],
[ 0.        ,  0.        ,  0.        ,  0.        ],
[-1.        , -0.85357479, -0.42896687, -1.        ],
[-0.60247776, -0.24399895, -1.03297297, -0.76709796],
[ 0.        ,  0.        ,  0.        ,  0.        ],
[-1.        , -1.        , -1.        , -0.12969158]])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: