天天看点

python学习笔记14(Numpy)

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。

Numpy使用ndarray对象来处理多维数组。

1.N维数组-ndarray

创建ndarray:np.array([])

ndarray的属性

python学习笔记14(Numpy)

创建数组时可指定类型

2.基本操作

生成0和1的数组

np.ones(shape[, dtype, order])

np.ones_like(a[, dtype, order, subok])

np.zeros(shape[, dtype, order])

np.zeros_like(a[, dtype, order, subok])

a = np.ones([2, 3])
print(a)
b = np.ones_like(a)
print(b)
           

从现有数组生成

np.array(object[, dtype, copy, order, subok, ndmin])

np.asarray(a[, dtype, order])

a = np.array([[1,2,3],[4,5,6]])
print('a: ', a)

a1 = np.array(a)
print('a1: ', a1)

a2 = np.asarray(a)
print('a2: ', a2)

a[1] = 2    # 修改数据
print('a: ', a)  # 修改后的a
print('a1: ', a1) # 数据不变
print('a2: ', a2) # 数据随a改变
           

生成固定范围数组

numpy.linspace (start, stop, num, endpoint) 生成等间隔的序列

start 序列的起始值

stop 序列的终止值,

num 要生成的等间隔样例数量,默认为50

endpoint 序列中是否包含stop值,默认为ture

numpy.arange(start,stop, step, dtype)

numpy.logspace(start,stop, num)

生成随机数组

np.random模块

np.random.rand(d0, d1, …, dn)

返回[0.0,1.0)内的一组均匀分布的数

np.random.uniform(low=0.0, high=1.0, size=None)

功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.

参数介绍:low: 采样下界,float类型,默认值为0;

high: 采样上界,float类型,默认值为1;

size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值。

返回值:ndarray类型,其形状和参数size中描述一致。

np.random.randint(low, high=None, size=None, dtype=‘l’)

从一个均匀分布中随机采样,生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

np.random.randn(d0, d1, …, dn)

功能:从标准正态分布中返回一个或多个样本值

np.random.normal(loc=0.0, scale=1.0, size=None)

参数介绍: loc:float 此概率分布的均值(对应着整个分布的中心centre)

scale:float​ 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)

size:int or tuple of ints​ 输出的shape,默认为None,只输出一个值

np.random.standard_normal(size=None)

返回指定形状的标准正态分布的数组。

形状修改

resize:给定一个数组,和特定维度,返回一个给定维度形式的新数组。如果新数组比原数组大,则将会copy原数组中的值对新数组进行填充

reshape:在不改变原数组数据的情况下,将它reshape成一个新的维度。如果给定的数组数据和需要reshape的形状不符合时,将会报错。

类型修改

ndarray.astype(type)

数组去重

np.unique()

python学习笔记14(Numpy)

ndarray运算

逻辑运算:

大于,小于直接进行判断

赋值:满足要求,直接进行赋值

通用判断函数:

np.all() 全部满足条件为ture

np.any() 有一个满足条件为true

np.where() 三元运算符

如:np.where(temp > 0, 1, 0) temp中大于0的置1,否则为0

·复合逻辑需要结合np.logical_and和np.logical_or使用

np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0) 大于0.5且小于1置1,否则为0

统计指标:min,max,median,mean,std,var

广播机制

功能是为了方便不同形状的ndarray(numpy库的核心数据结构)进行数学运算。

当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算。

①维度相等

②shape(其中相对应的一个地方为1)

矩阵乘法

np.matmul

np.dot

二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。