码迷,mamicode.com
首页 > 其他好文 > 详细

初学Numpy(三)

时间:2015-10-08 16:20:18      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

布尔型索引

 1 #!/usr/bin/env python
 2 #-*-coding:utf-8-*-
 3 ‘‘‘
 4 Description:初学numpy(三)--布尔型索引
 5 Created on 2015年10月8日
 6 @author: zenwan
 7 @version: 
 8 ‘‘‘
 9 import numpy as np
10 from pprint import pprint
11 
12 names = np.array([beijing,anhui,shanghai,jiangsu,zhejiang,shanghai,anhui])#有重复
13 data = np.random.randn(7,4)#生成正态分布的随机数
14 pprint(names)
15 pprint(data)
16 
17 ‘‘‘
18 假设names中的每个名字对应data数组中的一行,而我们想要选出对应于名字‘shanghai‘的所有行。
19 我们想要选出对应于‘shanghai‘的所有数据行.
20 跟算术运算一样,数组的比较运算(如==)也是矢量化的,因此数组names和字符串‘shanghai‘比较运算会产生一个布尔型数组arr_bool,
21 这个布尔型数组可以用于素组索引
22 ‘‘‘
23 arr0_bool = (names == shanghai)#数组跟字符串比较运算会产生一个布尔型的数组
24 pprint (arr0_bool) #array([False, False,  True, False, False,  True, False], dtype=bool)
25 pprint (data[arr0_bool])
26 
27 #将布尔型数组跟切片、整数、整数序列等混合使用
28 pprint(data[names == shanghai,2:])
29 pprint(data[names == shanghai,3])
30 
31 #选择‘shanghai‘以外的其它值等其它组合
32 arr1_bool =(names != shanghai)
33 arr2_bool =((names != shanghai)|(names==jiangsu))
34 arr2_bool =((names != shanghai)&(names==jiangsu))
35 
36 #将data中所有的正数设为-1
37 data[data > 0] = -1#数组的比较运算是矢量化的
38 pprint (data)
39 
40 #通过一维布尔型数组设置证行或者列,如将‘shanghai‘的所对应的整行数据设置为0
41 data [names ==shanghai] = 0
42 pprint(data)

运行结果:

 1 array([beijing, anhui, shanghai, jiangsu, zhejiang, shanghai,
 2        anhui], 
 3       dtype=|S8)
 4 array([[ 0.84608482,  0.51050985, -0.43504218, -1.08530829],
 5        [ 0.51865817, -1.0914367 , -0.6953841 , -1.59947846],
 6        [-0.9308739 , -0.2748063 , -0.410821  , -1.66078485],
 7        [ 0.2290689 , -0.85357479, -0.42896687,  0.97397006],
 8        [-0.60247776, -0.24399895, -1.03297297, -0.76709796],
 9        [-0.31226921, -0.42020231,  1.12008391,  0.54366616],
10        [ 0.53271514,  0.50497622,  1.02203728, -0.12969158]])
11 array([False, False,  True, False, False,  True, False], dtype=bool)
12 array([[-0.9308739 , -0.2748063 , -0.410821  , -1.66078485],
13        [-0.31226921, -0.42020231,  1.12008391,  0.54366616]])
14 array([[-0.410821  , -1.66078485],
15        [ 1.12008391,  0.54366616]])
16 array([-1.66078485,  0.54366616])
17 array([[-1.        , -1.        , -0.43504218, -1.08530829],
18        [-1.        , -1.0914367 , -0.6953841 , -1.59947846],
19        [-0.9308739 , -0.2748063 , -0.410821  , -1.66078485],
20        [-1.        , -0.85357479, -0.42896687, -1.        ],
21        [-0.60247776, -0.24399895, -1.03297297, -0.76709796],
22        [-0.31226921, -0.42020231, -1.        , -1.        ],
23        [-1.        , -1.        , -1.        , -0.12969158]])
24 array([[-1.        , -1.        , -0.43504218, -1.08530829],
25        [-1.        , -1.0914367 , -0.6953841 , -1.59947846],
26        [ 0.        ,  0.        ,  0.        ,  0.        ],
27        [-1.        , -0.85357479, -0.42896687, -1.        ],
28        [-0.60247776, -0.24399895, -1.03297297, -0.76709796],
29        [ 0.        ,  0.        ,  0.        ,  0.        ],
30        [-1.        , -1.        , -1.        , -0.12969158]])

 

初学Numpy(三)

标签:

原文地址:http://www.cnblogs.com/zenzen/p/4861228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!