初学Numpy(三)

布尔型索引

 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]])
时间: 2024-08-04 11:18:50

初学Numpy(三)的相关文章

Linux系统初学-第三课 Linux网络配置

Linux系统初学-第三课 Linux网络配置 1.动态IP配置 配置文件路径 /etc/sysconfig/network-scripts/ ls查看网卡eth0,其中HWADDR值得获取:ifconfig eht0 | grep HWaddr,保存之后,service network restart. c BOOTPROTO 网络配置参数,BOOTPROTO=dhcp 动态IP,BOOTPROTO=static 静态IP,BOOTPROTO=none 无(不指定) NETMASK 网络掩码,

JavaScrip——初学(三个常用对话框及方法调用)

一. 三个常用对话框: 1.都必须写在<scrip></scrip> <body> <font>alert("报错")</font><br /><br /> </body> </html> 写在body中,只显示文字 2. </body> </html> <script> alert("报错") confirm("

初学Numpy(五)

数组转置和轴对称 转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图,不会进行任何复制操作,数组不仅有transpose方法,还要一个特殊的T属性. (1)transpose (2)T (3)swapaxes 1 import numpy as np 2 from pprint import pprint 3 arr = np.arange(15).reshape((3,5)) 4 pprint(arr) 5 pprint(arr.T) 6 pprint(arr.transp

Node.js初学第三天

一.Post提交 1.前端代码: <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form action="http://127.0.0.1:4050/dopost" method="post" enctype="m

Shell初学(三)传参

一. 脚本代码:test.sh echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3"; 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3 参数处理 说明 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.如"

Nginx初学(三)日志的配置

1.进入到nginx的日志目录,我们可以看到下图的三个文件 其中nginx.pid中存放的是进程号,access.log是访问日志,error是错误日志. 2.我们打开配置文件,可以设置自己的日志文件.如下,配置好后保存,重启nginx. server { listen 8000; server_name www.wuaipic.cn; location / { root wuaipic; index index.html index.htm; } access_log logs/wuaipic

nodejs+express 初学(三)

Nodejs 的模块,nodejs中每一个js文件都是独立的,不用担心他们中的变量会相互覆盖 模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码. JSON 或者编译过的 C/C++ 扩展. 1.获取模块 Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口, require 用于从外部获取一个模块的接口,即所获取模块的 expor

HTML初学(三)

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>练习</title> <style> a:link{text-decoration: none} a:visited{color: #000000} a:hover{font-style: oblique} input[type="text

vue.js初学(三)模板语法

1:介绍 vue.js允许开发者声明式地将Dom元素绑定至Vue实例的底层,所有的模板都是合法的html,所以能够被遵循规范的浏览器和html解析器解析 在底层的实现上,vue将模板编译成虚拟Dom渲染.结合响应式系统 在应用改变时,vue能够智能地计算出重新渲染组件的最小代价并应用到Dom操作上. 如果你熟悉虚拟dom并且偏爱原生js的语法,你可以不用模板,直接写render函数,使用可选的jsx语法 2:插值 数据绑定 最常见的形式是:Mustache 双大括号. Mustache 标签将被