目录
一,numpy简介
二,函数,属性及方法汇总
三,数据类型
四,数组索引和切片
五,数组的组合与分解
六,数组的存取
一,numpy简介
NumPy(Numerical Python)是Python的一个开源科学计算的库,
由C语言实现,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。
NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,
其中有许多操作都是代码在本地进行编译后执行的
功能:
1. ndarray,一个多维数据结构,高效且节省空间
2. 无需循环对整组数据进行快速运算的数学函数
3. 读写磁盘数据的工具以及用于操作内存映射文件的工具
4. 线性代数、随机数生成和傅里叶变换功能
5. 用户集成C、C++等代码的工具
python代码和NumPy运算效率比较
import sys
import numpy as np
import time
def python_list(n):
a = list(range(n))
b = list(range(n))
c = []
for i in range(len(a)):
a[i] = i**2
b[i] = i**3
c.append(a[i]+b[i])
return c
py_st_time = time.time()
c = 10000
python_list(c)
waste_time1 = time.time()-py_st_time
print("python中容器向量元素为:%s 耗时:%.4f"%(c,waste_time1))
def numpy_list(n):
a = np.arange(n)**2
b = np.arange(n)**3
c = a+b
return c
numpy_st_time = time.time()
numpy_list(c)
waste_time2 = time.time()-numpy_st_time
print("numpy向量元素为:%s 耗时:%.4f"%(c,waste_time2))
print("numpy比python容器效率高%d倍"%(waste_time1/waste_time2))
NumPy的主要对象是同构多维数组,它是一个元素表(通常是数字),所有类型都相同(大部分同质,特殊的例外为异质),
由非负整数元组索引
NumPy的ndarray是多维数组对象。
由两部分组成:实际的数;描述这些数据的元数据。
大部分的数组操作仅修改元数据部分,而不改变底层的实际数据。
请注意,numpy.array这与标准Python库类不同array.array,后者只处理一维数组并提供较少的功能。
二,函数,属性及方法汇总
1,数组的运算
np.abs(a) np.fabs(a) : 取各元素的绝对值
np.sqrt(a) : 计算各元素的平方根
np.square(a): 计算各元素的平方
np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数
np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)
np.rint(a) : 各元素 四舍五入
np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回
np.exp(a) : 计算各元素的指数值
np.sign(a) : 计算各元素的符号值 1(+),0,-1(-)
.
np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值
np.minimum(a, b) np.fmin() : 取最小值
np.mod(a, b) : 元素级的模运算
np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素
np.ones(shape): 生成全1
np.zeros((shape), ddtype = np.int32) : 生成int32型的全0
np.full(shape, val): 生成全为val
np.eye(n) : 生成单位矩阵
np.ones_like(a) : 按数组a的形状生成全1的数组
np.zeros_like(a): 同理
np.full_like (a, val) : 同理
2,ndarray对象属性:
ndarray.ndim #数组维度
ndarray.shape #数组的各维度尺度
ndarray.size #数组元素的总数
ndarray.dtype #ndarray对象的元素类型
ndarray.itemsize #ndarray对象中每个元素的字节大小
ndarray.flags #ndarray对象的内存信息
ndarray.real #ndarray元素的实部
ndarray.imag #ndarray元素的虚部
ndarray.data #缓冲区包含数组的实际元素
ndarray.nbytes #数组所占存储空间(itemsize和size的乘积)
3,NumPy的统计函数
np.sum() np.min()
np.mean() np.max()
np.average() np.argmin()
np.std() np.argmax()
np.var() np.unravel_index()
np.median() np.ptp()
4,numpy随机数函数
numpy 的random子库
np.random.rand(d0, d1, …,dn) : 各元素是(0, 1)的浮点数,服从均匀分布
np.random.randn(d0, d1, …,dn):标准正态分布
np.random.randint(low, high,( shape)): 依shape创建随机整数或整数数组,范围是[ low, high)
np.random.seed(s) : 随机数种子
np.random.shuffle(a) : 根据数组a的第一轴进行随机排列,改变数组a
np.random.permutation(a) : 根据数组a的第一轴进行随机排列, 但是不改变原数组,将生成新数组
np.random.choice(a[, size, replace, p])
#从一维数组a中以概率p抽取元素, 形成size形状新数组,replace表示是否可以重用元素,默认为False。
replace = False时,选取过的元素将不会再选取
uniform(low, high, size) : 产生均匀分布的数组,起始值为low,high为结束值,size为形状
normal(loc, scale, size) : 产生正态分布的数组, loc为均值,scale为标准差,size为形状
poisson(lam, size) : 产生泊松分布的数组, lam随机事件发生概率,size为形状
eg: a = np.random.uniform(0, 10, (3, 4)) a = np.random.normal(10, 5, (3, 4))
5,numpy的统计函数
sum(a, axis = None) : 依给定轴axis计算数组a相关元素之和