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 ...
随机推荐
- 破解myeclipse10失败的一个奇葩原因
昨天开发用的myeclipse10突然弹窗提示我要激活,我清楚的记得安装时候已经破解并且看到激活信息了. 翻遍搜索出来的文章,改systemid之类的也试过了,问题依旧存在,很是绝望. 今早过来机灵了 ...
- 跟我一起阅读Java源代码之HashMap(三)
上一节我们讲到了如何用散列和链表实现HashMap,其中有一个疑问今天已经有些答案了,为什么要用链表而不是数组 链表的作用有如下两点好处 1. remove操作时效率高,只维护指针的变化即可,无需进行 ...
- 跟我一起阅读Java源代码之HashMap(一)
最近闲的很,想和大家一起学习并讨论下Java的一些源代码以及其实现的数据结构, 不是什么高水平的东西,有兴趣的随便看看 1. 为什么要用Map,以HashMap为例 很多时候我们有这样的需求,我们需要 ...
- eclipse导入maven工程missing artifact(实际是存在的)错误解决
找到出错的jar包文件位置,删掉_maven.repositories文件(或用文本编辑器打开,将“>main=”改为“>=”,即删除main,当然main也可能是其他值),然后updat ...
- jQuery 3D圆盘旋转焦点图 支持鼠标滚轮
之前我们分享过很多炫酷实用的jQuery焦点图插件了,今天介绍的这款jQuery焦点图非常特别,所有图片围成一个圆圈,组成一个立体视觉的圆盘,并且可以旋转选择圆盘中的图片.另外,这款jQuery 3D ...
- BZOJ 1305 dance跳舞 二分+最大流
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1305 题目大意: 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成 ...
- css3动画效果小结
css3的动画功能有以下三种: 1.transition(过度属性) 2.animation(动画属性) 3.transform(2D/3D转换属性) 下面逐一进行介绍我的理解: 1.transiti ...
- Python自动化之__unicode__
def __unicode__(self): return u'%s %s' % (self.first_name, self.last_name) 如果定义了__unicode__()方法但是没有定 ...
- Sublime Text常用设置之个人配置
一.安装 1.安装包下载: http://www.sublimetext.com/3 (傻瓜式安装) 2.Package Control安装: 1)Ctrl+~或者View——Show Consol ...
- Jquery中的height(),innerHeight(),outerHeight()的区别
前言 最近练习做弹窗,遇到height(),innerHeight(),outerHeight()的区别. 根据下面的盒模型来了解三者的区别. height():element的height; inn ...