numpy(Numerical Python extensions)是一个第三方的Python包,可用来存储和处理大型矩阵,常用于科学计算
1. 一个强大的N维数组对象Array
2. 比较成熟的(广播)函数库
3、用于整合C/C++和Fortran代码的工具包
4、实用的线性代数、傅里叶变换和随机数生成函数
一、基础知识
NumPy的主要对象是齐次多维数组。它是一个具有相同类型的元素表(通常是数字),由正整数的元组索引。在NumPy中维度称为轴(axes),axes的数量是秩(rank)
eg1. 在三维空间中,[1, 2, 1]是一个轴长为3,秩为1的数组
eg2. [[1., 0., 0.], [0., 1., 2.]]是一个秩为2的数组,第一个轴长为2,第二个轴长为3
NumPy的数组对象叫做ndarray, 通常更加熟悉的是它的别名array
ndarray.ndim 返回数组的秩(rank)
ndarray.shape 返回数组维度。对于一个m行n列的数组将返回值(m,n)
ndarray.size 返回数组中总的元素数量ndarray.dtype 返回一个描述数组元素类型的对象
ndarray.itemsize 数组中每个元素的字节大小。例如,类型为float64的数组元素的itemsize是8
程序:
import numpy as np
arr = [[[1,2,3],[4,5,6],[7,8,9]],[[-1,-2,-3],[-4,-5,-6],[-7,-8,-9]]
arr = np.array(arr)
print(arr.ndim)
print(arr.shape)
print(arr.size)
print(arr.dtype)
结果:
3
(2, 3, 3)
18
int64
二、常见的用法
# 创建数组
numpy.array([1,2,3]) # 创建数组[1,2,3]
numpy.zeros((m,n)) # 创建m行n列的全零数组
numpy.ones((m,n)) # 创建m行n列的全一数组
numpy.empty((m,n)) # 创建m行n列的空数组
numpy.arange(begin,end,step) # 创建一个一维数组,数组元素从begin按step递增到end
numpy.linspace(begin, end, numbers) # 创建一个一维数组,数组包含numbers个元素,从begin递增到end
# 创建随机数组
numpy.random.rand(m,n) # 创建m行n列的随机数组,数组元素为[0,1]之间的浮点型随机数
numpy.random.rand() # 产生一个[0,1]之间的随机数
numpy.random.random((m,n)) # 创建m行n列的随机数组,数组元素为[0,1]之间的浮点型随机数
numpy.random.random() # 产生一个[0,1]之间的随机数
numpy.random.choice(arr,20, replace=False) # 从arr中无回放的随机采样20个
numpy.random.uniform(begin,end,numbers) # 产生numbers个[begin,end)之间的随机数
numpy.random.randint(begin,end,numbers) # 产生numbers个[begin,end)之间的随机整数
numpy.random.normal(size=(5,2)) # 产生2x5的标准正态分布样本
numpy.random.binomial(n=5,p=0.5,size=5) # 产生5个,n=5,p=0.5的二项分布样本
# 乱序
numpy.random.permutation(arr) # 对arr进行乱序并返回一个新的数组
numpy.random.shuffle(arr) # 对arr进行in-place乱序并返回一个新的数组
numpy.arrange(num).reshape(4,3)
# 算术运算
numpy.max(arr) # 计算最大值
numpy.min(arr) # 计算最小值
numpy.mean(arr) # 计算均值
numpy.std(arr) # 计算方差
numpy.sum(arr) # 求和
numpy.exp(arr) # 指数运算
numpy.sqrt(arr) # 开平方运算
numpy.power(a,b) # 计算a的b次方
numpy.add(arr1, arr2) # 数组求和运算
numpy.abs(arr) # 计算绝对值
numpy.sin(numpy.pi/2) # sin函数
# 复制
a = numpy.arange(12)
b = a # a和b指向同一个array对象
c = a.view() # a和c是两个不同的array对象,a和c查看相同的数据
d = a.copy() # a和d是两个不同的array对象,指向不同的数据
参考资料:
1、https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
2、http://python.jobbole.com/87471/