Python Numpy的详细使用方法

*numpy (import numpy as np)

1.创建ndarray:

(1).用list数组创建

list=[a,b,c]
n=np.array(list)

(2).创建一个全为1的ndarray

n=np.ones(shape=(3,3))
print(n)

(3).创建全为0的ndarray

n=np.zeros(shape=(3,3))
print(n)

(4).创建全为指定数字的ndarray

n=np.full(shape=(3,3),fill_value=5)
print(n)

(5).创建对角线为指定数字的ndarray

n=np.eye(N=6,M=6,k=0)
# k为偏移量
print(n)

(6)创建等差数列

n=np.linspace(start=1,stop=101,endpoint=False,num=50)
# endpoint 是否包含最后一个  间隔为(101-1)/50=2
print(n)

(7)相当于python中的range

n=np.arange(1,6)
print(n)

(8)随机生成一个数

#随机生成一个指定范围整数
n=np.random.randint(1,6,size=(2,3))
print(n)
​
#随机生成一个指定范围的浮点数
n=np.random.uniform(low=0.0, high=1.0, size=(2,3))
print(n)
​
​
#随机生成一个0到1之间的浮点数
n=np.random.random(size=(2,3))
print(n)
​
#从一个迭代器中随机选择一个元素
a=list('abc')
n=np.random.choice(a,size=(2,3))
print(n)
​
#随机生成一个服从标准正态分布的函数的数字
n=np.random.randn(1,3)
print(n)
​
#随机生成一个服从正态分布的数字
n=np.random.normal(loc=0.0, scale=1.0, size=(2,3))
#loc 代表均值
#scale代表标准差
print(n)
​

2.Ndarray属性:

(1).ndim:维度

(2)shape:形状

(3)size:总长度

(4)dtype:类型

3.numpy的索引操作和切片操作

(1).索引操作

n=np.random.randint(0,10,size=(4,4))
print(n)
print(n[3,3])
print(n[-1,-1])#得到倒数第一行的倒数第一个数字

(2)切片操作

#行
n=np.random.randint(0,10,size=(4,4))
print(n)
# 取一行 索引
print(n[0])
print('--------------------------------------')
# 取连续多行,切片
print(n[2:4])
print('---------------------------------------')
# 取不连续多行,中括号
print(n[[1,3]])
# 列
n=np.random.randint(0,10,size=(4,4))
print(n)
# 取一列,取所有行和第一列
print(n[:,0])
# 取连续的多列
print(n[:,1:3])
# 取不连续的多列,中括号
print(n[:,[1,3,4]])

4.数组变形,级联,拆分和拷贝

(1)变形

n=np.arange(1,21)
print(n)
print('--------------------------------')
# 把一维变成二维
n2=np.reshape(n,(4,5))
print(n2)
print('------------------------------')
#使用-1,表示任意剩余维度长度
n3=n2.reshape(4,-1)
n4=n2.reshape(-1,4)
n5=n2.reshape(-1,2)
# 直接把原来的一行变成一列了
n6=n2.reshape(-1,1)

(2)级联

n1=np.random.randint(0,10,size=(3,5))
n2=np.random.randint(0,10,size=(3,5))
# 默认上下合并
n3=np.concatenate(n1,n2)
# axis参数 0表示第一个维度合并(行合并),1表示第二个维度合并(列合并)
​
# hstack 水平合并
n4=np.hstack()
# vstack 垂直合并
n5=np.vstack()

(3)拆分

n1=np.random.randint(0,10,size=(3,6))
# 垂直拆分,平均拆成三份
n2=np.vsplit(n1,3)
# 按照指定位置去拆分
n3=np.vspilt(n1,(1,2,4))
# 水平 hsplit同理
# split axis 0代表行拆分,1代表列拆分
n4=np.split(n1,2,axis=0)

(4)数组的拷贝

n=np.arange(0,10)
# 浅拷贝:拷贝的是一个地址
n2=n
# 深拷贝:得到一个全新的数组
n3=n=np.copy(n)

4.numpy聚合操作

(1)得到一个值

求和:np.sum()

最小值:np.min

最大值:np.max

平均值:np.average

中位数:np.median

百分位数:np.percentile

最小值对应下标:np.argmin

最大值对应下标:np.argmax

标准差:np.std

方差:np.var

次方,求幂:np.power

按条件查找:np.argwhere

(2)常见的数学操作

abs:绝对值

sqrt:开平方 (n**0.5)

square:平方

exp:指数

log:对数 (以e为底的对数)log2(n)以2为底的对数

sin:正弦

cos:余弦

tan:正切

round:四舍五入

ceil:向上取整

floor:向下取整

cumsum:累加 [1,2,3,4] [1,3,6,10]

5.矩阵的基本操作

(1)矩阵和数字之间的运算

加+,减-,乘*,除/,整除//,次方**,余数%

(2)矩阵和矩阵之间的操作

同上,乘法是对应元素相乘

(3)矩阵中其他操作:(线性代数常用)

#矩阵积
n=np.dot(n1,n2) (第一个矩阵的列数等于第二个矩阵的行数)
#矩阵逆
np.linalg.inv(n)
#矩阵的行列式
np.linalg.det(n)
#矩阵的秩
np.linalg.matrix_rank(n)

6.广播机制

(1)两条规则

规则一:为缺失的维度补维度

规则二:缺失元素用已有值填充

7.排序

np.sort:不改变原数组

ndarray.sort():改变原数组,不多占内存空间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值