numpy是高性能科学计算和数据分析基础包。部分功能如下:
- ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组
- 对于整组数据进行快速运算的标准数学函数
- 用于读写磁盘数据的工具及用于操作内存映射文件的工具
- 线性代数、随机数、傅里叶变换
- 用于集成由C、C++、Fortran等语言编写的代码的工具
ndarray
使用array函数转化列表创建数组。
输入:
data1 = [6,7.5,8,0,1]
arr1=np.array(data1)
arr1
输出:
array([6. , 7.5, 8. , 0. , 1. ])
嵌套序列会转化为多维数组
zeros和ones分别可以创建指定长度或者形状的全0或全1数组。empty可以创建没有任何具体值得数组。
dtype可以自定义数据类型,astype()可以更改数据类型。
strings= np.array(['1.25','-9.6','42'],dtype=np.string_)
strings.astype(float)
array([ 1.25, -9.6 , 42. ])
索引和切片
跟列表的区别在于,数组的切片是原始数组的视图,视图上的任何修改都会直接反映到源数组上。
布尔型索引:数组长度必须与索引轴长度一致。还可以通过布尔型数组设置值。
data = randn(7,4)
data[data<0]=0
可以将data中所有的负值都设置为0.
通过布尔型索引选取的数组中的数据,将总是创建数据的副本。花式索引和切片不一样,它总是将数据复制到新数组中。
转置和轴兑换
转置是重塑的一种特殊形式,返回的是源数据的视图(不会进行任何复制操作)。数组不仅有transpose方法,还有特殊的T属性。
arr.T
在进行矩阵计算的时候,常用到该操作,比如使用np.dot计算矩阵内积XTX:
arr=np.random.randn(6,3)
np.dot(arr.T,arr)
可以进行基本数组统计方法,sum,mean,var,min,max等。
还可以叠加布尔型数组的方法进行计算。
arr=randn(100)
(arr >0).sum()
排序
和Python内置列表类型一样,numpy数组也可以通过sort进行排序。
针对一维数组ndarry的基本集合运算。常用的np.unique,用于找出数组中的唯一值并返回已排序的结果。
储存
np.save 和np.load是读写磁盘数组数据的两个主要函数。
范例:随机漫步
xrange()
xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。
>>>xrange(8)
xrange(8)
>>> list(xrange(8))
[0, 1, 2, 3, 4, 5, 6, 7]
>>> xrange(0,6,2)
xrange(0, 6, 2) # 步长为 2
>>> list(xrange(0,6,2))
[0, 2, 4]
import random
position =0
walk = [position]
steps = 1000
for i in range(steps):
step = 1 if random.randint(0,1) else -1
position +=step
walk.append (position)