Bootstrap

numpy详细教程笔记

目录
一,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相关元素之和
;