Python学习之路:NumPy进阶
import numpy as np;
#创建数组的四种办法
##可以传入任何类数组
a = np.array([0,1,2,3,4]);
b = np.array((0,1,2,3,4));
c = np.arange(5);
d = np.linspace(0,2*np.pi,5);
print(a);
print(b);
print(c);
print(d);
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0. 1.57079633 3.14159265 4.71238898 6.28318531]
#创建二维数组
a = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28 ,29, 30],
[31, 32, 33, 34, 35]]);
print(a);
[[11 12 13 14 15]
[16 17 18 19 20]
[21 22 23 24 25]
[26 27 28 29 30]
[31 32 33 34 35]]
#多维数组的切片
print(a[0,1:4]);
print(a[1:4,0]);
print(a[:,1]);
##骚操作 用法:起始索引:结束索引:步长(不包括结束索引)
print(a[1:4:1,0:5:2]);
[12 13 14]
[16 21 26]
[12 17 22 27 32]
[[16 18 20]
[21 23 25]
[26 28 30]]
#多维数组的属性
print(a);
print(type(a));
print(a.dtype);
print(a.size);
print(a.shape);
print('-------------')
print(a.itemsize);#每个元素所占的字节数
print(a.ndim);#数组的维数
print(a.nbytes);#数组中的所有数据消耗掉的字节数。你应该注意到,这并不计算数组的开销,因此数组占用的实际空间将稍微大一点
[[11 12 13 14 15]
[16 17 18 19 20]
[21 22 23 24 25]
[26 27 28 29 30]
[31 32 33 34 35]]
<class 'numpy.ndarray'>
int32
25
(5, 5)
-------------
4
2
100
#多维数组的运算
a = np.arange(25)
a = a.reshape((5, 5))
b = np.array([10, 62, 1, 14, 2, 56, 79, 2, 1, 45,
4, 92, 5, 55, 63, 43, 35, 6, 53, 24,
56, 3, 56, 44, 78])
b = b.reshape((5,5))
#两个数组做比较是是数组中每个元素依次比较,要求两个矩阵维度一致
print(a < b)
print(a > b)
print('----------------------------------');
print(a[a<b]);
print('----------------------------------');
print(a.dot(b));
[[ True True False True False]
[ True True False False True]
[False True False True True]
[ True True False True True]
[ True False True True True]]
[[False False True False True]
[False False True True False]
[ True False True False False]
[False False True False False]
[False True False False False]]
----------------------------------
[ 0 1 3 5 6 9 11 13 14 15 16 18 19 20 22 23 24]
----------------------------------
[[ 417 380 254 446 555]
[1262 1735 604 1281 1615]
[2107 3090 954 2116 2675]
[2952 4445 1304 2951 3735]
[3797 5800 1654 3786 4795]]
#另外一些常见的函数
a = np.arange(10);
print(a);
print(a.sum());
print(a.min());
print(a.max());
#累加函数
print(a.cumsum());
[0 1 2 3 4 5 6 7 8 9]
45
0
9
[ 0 1 3 6 10 15 21 28 36 45]
#花式索引
##检索特定的元素,类似多重赋值
a = np.arange(0,100,10);
indices = [1,5,-1];
b = a[indices];
print(a);
print(b);
print('-------------------------');
a = np.ones((5,5));
a[0,0] = 5;
a[2,0] = 2;
print(a);
indices = [0,2,3];
b = a[indices];
print(b);
[ 0 10 20 30 40 50 60 70 80 90]
[10 50 90]
-------------------------
[[5. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[2. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
[[5. 1. 1. 1. 1.]
[2. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
#布尔屏蔽
import matplotlib.pyplot as plt;
a = np.linspace(0, 2 * np.pi, 50);
b = np.sin(a);
plt.plot(a,b);
mask = b >= 0;
plt.plot(a[mask], b[mask], 'bo');
mask = (b >= 0) & (a <= np.pi / 2);
plt.plot(a[mask], b[mask], 'go');
plt.show();
#缺省索引
# Incomplete Indexing
a = np.arange(0, 100, 10)
b = a[:5] # [0:5]
print(a>=50);
c = a[a >= 50]
print(b) # >>>[ 0 10 20 30 40]
print(c) # >>>[50 60 70 80 90]
[False False False False False True True True True True]
[ 0 10 20 30 40]
[50 60 70 80 90]
#Where 函数
a = np.arange(0,100,10);
print(a[a>=50]);
print(np.where(a < 50));
print(np.where(a < 50)[0]);
[50 60 70 80 90]
(array([0, 1, 2, 3, 4], dtype=int64),)
[0 1 2 3 4]
Python学习之路:NumPy进阶的更多相关文章
- Python学习之路-Day1-Python基础
学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- python学习之路------你想要的都在这里了
python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Python学习之路-Day2-Python基础3
Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
- python 学习之路开始了
python 学习之路开始了.....记录点点滴滴....
- python学习之路,2018.8.9
python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!
- Python学习之路——pycharm的第一个项目
Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...
随机推荐
- SQL Server错误处理
一.SQLServer数据库引擎错误 1.查询系统错误信息 SQLServer在每个数据库的系统视图sys.messages中存储系统自定义(Message_id <= 50000)和用户自定义 ...
- MySQL知识总结(四)二进制日志
1 定义 bin-log日志记录了所有的DDL和DML的语句,但不包括查询的语句,语句以事件的方式保存,描述了数据的更改过程,此日志对发生灾难时数据恢复起到了极为重要的作用. 2 开启 mysql默认 ...
- Apache服务器下使用 ab 命令进行压力测试
ab是Apache超文本传输协议(HTTP)的性能测试工具. 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. #ab -v可以看出其基本信息 ...
- BZOJ1029:[JSOI2007]建筑抢修(贪心,堆)
Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的 入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快 ...
- 4199. [NOI2015]品酒大会【后缀数组+并查集】
Description 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加.在大会的晚餐上,调酒师 ...
- 1059. [ZJOI2007]矩阵游戏【二分图】
Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行 ...
- virtualbox+vagrant学习-2(command cli)-14-vagrant reload命令
Reload 格式: vagrant reload [vm-name] 其等价于在运行vagrant up命令后接着运行vagrant halt 要使在Vagrantfile文件中所做的更改生效,通常 ...
- 多线程之Timer和TimerTask
Timer是一种线程设施,用于安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask.TimerTask是一个抽象类,实现了Runnabl ...
- Linux搜索查找命令
Linux搜索查找指令 find,用于在文件树中查找文件并作相应的处理 -name:按照文件名查找文件 -perm:按照文件权限查找文件 -user:按照文件属主来查找文件 -size:按照指定的文件 ...
- CANopen个人之所见,所想
一直想写一篇关于CANopen的文章,鉴于个人知识能力没有动笔,今天做了一番思想斗争,斗胆发表一下自己对CANOPEN的肤浅认识. 计划从销售人员,技术人员角度都分析一下CANopen的优势,文章可能 ...