numpy 基础知识
来源:互联网 发布:python 首字母小写 编辑:程序博客网 时间:2024/06/08 07:53
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
创建数组
- 可以通过给array函数传递Python的序列对象创建数组。
NumPy提供了很多专门用来创建数组的函数,如arange函数、linspace函数、logspace函数,random函数、zeros、ones等
import numpy as npa=np.array([1,2,3,4])b=np.array((1,2,3,4))#等差/比print np.arange(1,10,1)#[1 2 3 4 5 6 7 8 9]print np.linspace(1,10,5)#[ 1. 3.25 5.5 7.75 10. ]print np.logspace(1,2,5)#[10. 17.7827941 31.6227766 56.23413252 100. ]#随机数print np.random.rand(1,5)#第一个参数代表一行[[ 0.54190009 0.88740335 0.26858951 0.52750372 0.83566541]]print np.random.rand(2,5)#两行print np.random.randint(2,size=5)#5个随机整数[0,2)print np.random.randint(2,5,size=5)#5个随机整数[2,5)#全0或全1print np.zeros(3)#[ 0. 0. 0. 0. 0.]print np.zeros((3,3))#三行三列为0
获取属性
- ndarray.shape
数组的维度。这是一个指示数组在每个维度上大小的整数元组。 - ndarray.size
数组元素的总个数,等价于shape属性中元组元素的乘积。 - ndarray.dtype
用来描述数组中元素类型的对象. ndarray.reshape
使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape保持不变a=np.array([[1,2,3,4],[2,3,4,5]])print a.shape,a.size,a.dtype//(2, 4) 8 int32d=a.reshape((4,-1))//[[1 2],[3 4],[2 3],[4 5]]
注意:
- total size of new array must be unchanged
- 数组a和d其实共享数据存储内存区域,因此修改其中任意一个数组的元素都会同时修改另外一个数组的内容
存取数据
- 数组元素的存取方法和Python的标准方法相同;
- 和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间
使用布尔数组,使用布尔数组作为下标获得的数组不和原始数组共享数据空间
a=np.random.rand(5)#[ 0.05056014 0.74492156 0.30582769 0.75466489 0.9813687 ]a[a>0.5]#[ 0.74492156 0.75466489 0.9813687 ]
基本运算
数组的算术运算是按元素的。
a= np.arange(5)
b=np.zeros(5)
print a-b#[ 0. 1. 2. 3. 4.]
print a*b#[ 0. 0. 0. 0. 0.]NumPy中的乘法运算符 * 指示按元素计算,矩阵乘法可以使用 dot 函数或创建矩阵对象实现。dot 函数在处理一维时是点乘,二维时是矩阵相乘。
a=np.array([1,2,3])
b=np.array([3,2,1])
print np.dot(a,b)#10
aa=np.array([[1,1]])
bb=np.arange(1,5).reshape(2,-1)
print np.dot(aa,bb)#[[4 6]]
函数和方法
参考文献
Numpy教程1
Numpy教程2
Numpy文档
- numpy 基础知识
- numpy 基础知识
- numpy基础知识
- numPy基础知识
- numpy数组基础知识
- Python numpy基础知识
- numpy的基础知识
- Python numpy基础知识
- numpy矩阵基础知识回顾小结
- numpy基础知识 / Scipy Lecture Notes
- Numpy、Pandas和Matplotlib包基础知识
- Numpy、Pandas和Matplotlib包基础知识
- 利用python进入数据分析之Numpy基础知识
- 利用python进行数据分析学习笔记—Numpy基础知识
- Numpy
- numpy
- numpy
- Numpy
- sql时间戳按时间进行分组
- linux常用命令
- ios多线程
- java提高篇(四)-----抽象类与接口
- com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1问题出现的原因及解决办法
- numpy 基础知识
- Wix学习整理(2)——HelloWorld安装添加UI
- UIPageViewController 专辑
- 第13周项目2-Kruskal算法的验证
- hdu1085 Holding Bin-Laden Captive! (多重背包)
- putty(ssh)无法登陆linux(bt5)解决方案
- Linux makefile 教程 非常详细,且易懂
- java提高篇(五)-----使用序列化实现对象的拷贝
- fixedz闪动问题深度总结~~