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 ...
随机推荐
- XtraEditors一、总体介绍
一.所有编辑器的公共功能 全部都可以绑定数据: 全部都可以独立使用或用于由 Developer Express 提供的容器控件 (XtraGrid.XtraVerticalGrid.XtraTreeL ...
- PAT 1001 A+B 解题报告
PAT 1001 A+B 代码链接:传送门 题目链接:传送门 题目简述: 给定两个值a,b: 范围-1000000 <= a, b <= 1000000: 按指定格式输出a+b的结果,例: ...
- kvo的observationInfo
观察者信息的注册: <NSKeyValueObservationInfo 0x600000708d60> ( <NSKeyValueObservance 0x6000009143f0 ...
- 在CentOS7上部署 Kubernetes集群
yum -y install etcd docker flannel kubenetes 一般会遇到没有k8s源的问题,先 yum update -y 看是否有效,如果还是没用就创建yum 源,再 ...
- gcd?人生赢家!
题目背景 原创:b2019dy gcd是一个热爱游戏的人 题目描述 gcd最近在玩一个有趣的游戏 我们把这个游戏抽象成一张图,图上有n个点,我们需要寻找总计m件宝物,它们分布在图上,对于每件宝物而言, ...
- 使用 BEGINCONTENT() 和 ENDCONTENT() 设定 YII 的 LAYOUTS
Yii 的 views/layouts 是用来放置 layouts 的目录,在默认的情况下会有 main.php 和 column1.php 和 column2.php. main.php 内容定义了 ...
- 多线程并发容器CopyOnWriteArrayList
原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容 ...
- windows下安装redis并设置自启动
一.下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载 官网下载地址 ...
- PAT乙级1014
1014 福尔摩斯的约会 (20 分) 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d& ...
- ArcGIS中的坐标系统定义与投影转换(转)
ArcGIS中的坐标系统定义与投影转换 ArcGIS中的坐标系统定义与投影转换 坐标系统是GIS数据重要的数学基础,用于表示地理要素.图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正 ...