python的numpy库内容_Python之Numpy库

import numpy as np

生成Numpy数组

data1=[1, 2.1, 3, 4]

array1=np.array(data1)

array1.dtype --- 查看数组array1的数据类型

array1.shape --- 查看数组array1的形状,也就是尺寸

arrray1.ndim --- 查看array1的维度

array1.astype(np.int32) --- astype( )用于转换数组array1的数据类型,这里转换为整型

array1=np.array([[1, 2, 3], [3, 4, 5]]) --- 生成二维数组

array1=np.arange(start, stop, step, dtype) --- 生成数组,数据范围为 [start, stop),步长为step,步长可以取浮点数,数据类型为dtype

array1=np.linespace(start,stop,step) --- 生成数组,数据等间隔,数据范围为 [start, stop],步长为 step

zeros1=np.zeros((2,3)) ---  生成2行3列的二维数组,元素都为0,也可以np.zeros(shape=(2,3))或np.zeros(shape=[2,3])

ones1=np.ones(shape=[2,3], dtype=float) --- 生成2*3的二维数组,元素都为1,且元素数据类型为浮点数

zeros2=np.zeros_like(array1) --- 生成一个和数组array1行列相同、元素数据类型相同的数组,不过元素都为0

ones2=np.ones_like(array1) --- 生成一个和数组array1行列相同、元素数据类型相同的数组,不过元素都为1

array2=array1.reshape((4,5)) --- 假设array1=np.arange(20),则array2被重构成4*5的二维数组

np.empty_like( ) --- 产生和给定数组尺寸和类型相同的数组,不过元素没有被初始化

np.full_like( ) --- 产生和给定数组尺寸和类型相同的数组,数组中的元素被初始化为某个给定值

生成Numpy三维数组

其实就是生成2个二维数组 array1=np.array([[[1, 2 ,3], [4, 5, 6]], [[1, 1, 1], [0, 0, 0]]])

array1也可以称为2通道2行3列数组

array1=np.arange(20).reshape(2,2,5) --- 重构生成数组为2通道2行5列

数组向量运算

a=np.array([1, 2, 3, 4])

b=np.array([2, 3, 4, 5])

对于尺寸相同的数组可以用+、-、*、/等运算符对相同位置的元素进行运算

a+b --- 得到 [3, 5, 7, 9]

a-b --- 得到 [-1, -1, -1, -1]

此外还有a*b、a/b、a%b等等

a**2 --- 得到 [1, 4, 9, 16],每个元素的平方

另外numpy还提供了sum()、min()、max()、median()、mean()、average()、std()、var()这些函数分别用于求和、最小值、最大值、中位数、平均数、加权平均数、标准差、方差

np.dot(a,b) --- 满足矩阵相乘条件时,可以得到矩阵a与b相乘的结果

np.inner(a,b) --- 求向量a和b的内积

np.transpose(array1) --- 求数组array1对应矩阵的转置

a.flattern() 或 a.ravel() --- 将矩阵a展平为一维数组

np.mat(a) --- 可以将数组a转换成矩阵,a=np.mat(a)、b=np.mat(b),这样a*b直接可以得到与np.dot(a,b)一样的结果

a=np.mat(a), a.I --- a.I 返回矩阵a的逆矩阵

a=np.mat(a), a.T --- a.T 返回矩阵a的转置矩阵

a.A --- 返回矩阵a对应的数组

np.eye( ) --- 用于生成单位矩阵

np.diag( ) --- 用于生成指定对角线元素的矩阵

einsum() 实现矩阵或向量的运算

array1=np.arange(5)

sum1=np.einsum('i->',array1) --- 求数组中所有元素的和

array1=np.arange(6).reshape(2,3)

sum1=np.einsum('ij->j',array1) --- 对于array1按列求和,就是把每列上的元素相加

sum1=np.einsum('ab-a',array1) --- 对于array1按行求和,就是把每行上的元素相加

还可以 np.einsum('abc->bc',array1)

array1=np.arange(6).reshape(2,3),  array2=np.arange(6).reshape(3,2)

np. einsum('ij, jk->ik', array1, array2) --- 实现array1和array2的矩阵乘法

np.einsum('ij, ij->ij', array1, array2) --- 实现array1和array2的矩阵点乘

如果array1和array2是一维向量,则点积或内积为 np.einsum('i,i->', array1, array2)

np.enisum('ii->i', array1) --- 若array1为方阵,则得到对角线元素

np.enisum('ii->', array1) --- 若array1为方阵,则得到array1矩阵的迹

np.enisum('ij->ji', array1) --- 得到array1的转置矩阵

Numpy中利用轴方向运算

array1=np.arange(6),reshape(2,3)

array1.sum(axis=0) --- 按列求和

array1.sum(axis=1) --- 按行求和

array1=np.array([[[1, 2, 3], [2, 3, 4]], [[1, 1, 1], [0, 0, 0]]] --- 2通道2行3列

array1.sum(axis=0) --- 按最外层求和,也就是按通道求和

array1.sum(axis=1) --- 按行求和

array1.sum(axis=2) --- 按列求和

除了array1.sum(),array1.max()、array1.min()、array1.mean()等都可以按轴方向来进行运算

Numpy中的数组切片访问

array1=np.arange(5)

array1[start:end:step]中各个参数的组合,这里取值范围为 [start, end),step为负数则表示倒取数

start:end:step --- [start, end),步长step

start:end --- [start,end), 步长为1

start: --- 从start开始所有元素,步长为1

start::step --- 从start开始所有元素,步长为step

:end:step ---从头开始到end前一个元素结束,步长为step

:end --- 从头开始到end前一个元素结束,步长为1

::step --- 从头开始取元素,直到最后,步长为step

: 或者 :: --- 取所有元素

Numpy维度扩展和数据复制

不同尺寸的数组相加,小尺寸向大尺寸方向扩展,直到和大尺寸一致,这种扩展可以是行方向、列方向、行和列两个方向

不管往哪个方向,都采取数据复制的原则,例:[1, 2, 3]列方向扩展成为 [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

Numpy中的其他索引方式

array1=np.arange(20).reshape(4,5)

row=[0, 2]    col=[1, 3]

array1[row] --- 取第0行和第2行数据

array1[:, col] --- 取第1列和第3列数据

array1[row, col] --- 取[0,1]、[2,1]、[0,3]、[2,3]四个元素

array1[array1>5] --- 取所有大于5的元素

Numpy中的数组的拼接与分割

array1=np.arange(25).reshape(5,5)

array2=np.arrage(25).reshape(5,5)

np.hstack(array1,array2) --- 水平拼接,增加列的数量,行的数量不变

np.vstack(array1,array2) --- 垂直拼接,增加行的数量,列的数量不变

np.dstack(array1,array2,array3) --- 三个数组拼接,具体今后用到再搜索相关资料

np.column_stack( ), np.row_stack( ) --- 列方向和行方向上的拼接,今后遇见再查资料

np.hsplit( ), np.vsplit( ), np.dsplit( ) ---- 具体今后遇见再查资料

Numpy中生成随机数

np.random.seed(s) --- 生成随机种子,如果给出s,随机数为伪随机数,如果不给出s,则更加随机

rdm=np.random.RandomState(s) --- 生成随机种子,s给出是伪随机数,s不给出的话,则更加随机

np.random.rand(2,3) --- 生成2行3列的随机数组,均匀分布

np.random.random((2,3)) --- 生成2行3列的随机数组,均匀分布

np.random.randn(2,3) --- 生成2行3列的随机数组,标准正态分布

np.random.randint(1, 10, (2,3)) --- 生成2行3列的随机整数数组,元素范围 [1,10)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值