咱们须要了解一下 numpy 的应用场景
web
NumPy提供了大量的数值编程工具,能够方便地处理向量、矩阵等运算,极大地便利了人们在科学计算方面的工做。另外一方面,Python是免费,相比于花费高额的费用使用Matlab,NumPy的出现使Python获得了更多人的青睐
编程
查看 numpy 版本
数组
import numpy
numpy.version.full_version
数组
微信
NumPy中的基本对象是同类型的多维数组(homogeneous multidimensional array),这和C++中的数组是一致的,例如字符型和数值型就不可共存于同一个数组中。先上例子dom
a = numpy.arange(20)
经过函数reshape
,咱们能够从新构造一下这个数组,例如,咱们能够构造一个4*5
的二维数组,其中reshape
的参数表示各维度的大小,且按各维顺序排列(两维时就是按行排列,这和R中按列是不一样的):
ide
a = a.reshape(4,5)
构造更高维的也没问题:函数
a = a.reshape(2,2,5)
既然a
是array
,咱们还能够调用array
的函数进一步查看a
的相关属性:ndim
查看维度;shape
查看各维度的大小;size
查看所有的元素个数,等于各维度大小的乘积;dtype
可查看元素类型;dsize
查看元素占位(bytes)大小工具
建立数组
spa
数组的建立可经过转换列表实现,高维数组可经过转换嵌套列表实现:.net
raw = [0,1,2,3,4]
a = numpy.array(raw)
raw = [[0,1,2,3,4], [5,6,7,8,9]]
b = numpy.array(raw)
一些特殊的数组有特别定制的命令生成,如4*5
的全零矩阵:
d = (4, 5)
numpy.zeros(d)
默认生成的类型是浮点型,能够经过指定类型改成整型:
d = (4, 5)
numpy.ones(d, dtype=int)
[0, 1)
区间的随机数数组:
numpy.random.rand(5)
数组操做
简单的四则运算已经重载过了,所有的+
,-
,*
,/
运算都是基于所有的数组元素的,以加法为例:
相似C++,+=
、-=
、*=
、/=
操做符在NumPy中一样支持:
开根号求指数也很容易:
须要知道二维数组的最大最小值怎么办?想计算所有元素的和、按行求和、按列求和怎么办?for
循环吗?不,NumPy的ndarray
类已经作好函数了:
数组元素访问
数组和矩阵元素的访问可经过下标进行,如下均以二维数组(或矩阵)为例:
能够经过下标访问来修改数组元素的值:
如今问题来了,明明改的是a[0][1]
,怎么连b[0][1]
也跟着变了?这个陷阱在Python编程中很容易碰上,其缘由在于Python不是真正将a
复制一份给b
,而是将b
指到了a
对应数据的内存地址上。想要真正的复制一份a
给b
,能够使用copy
若对a
从新赋值,即将a
指到其余地址上,b
仍在原来的地址上:
利用:
能够访问到某一维的所有数据,例如取矩阵中的指定列:
数组操做
仍是拿矩阵(或二维数组)做为例子,首先来看矩阵转置:
矩阵求逆:
求特征值和特征向量
按列拼接两个向量成一个矩阵:
在循环处理某些数据获得结果后,将结果拼接成一个矩阵是十分有用的,能够经过vstack
和hstack
完成:
缺失值
缺失值在分析中也是信息的一种,NumPy提供nan
做为缺失值的记录,经过isnan
断定。
nan_to_num
可用来将nan
替换成0,在后面会介绍到的更高级的模块pandas
时,咱们将看到pandas
提供能指定nan
替换值的函数。
NumPy还有不少的函数,想详细了解可参考连接 http://wiki.scipy.org/Numpy_Example_List 和 http://docs.scipy.org/doc/numpy
最后献上NumPy SciPy Pandas Cheat Sheet
本文分享自微信公众号 - 人生代码(lijinwen1996329ken)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。