文章目录
numpy 是 Python 中的一个开源数值计算扩展库,它提供了大量的数学函数库,以及一个强大的 N 维数组对象 ndarray。numpy 是 Python 进行科学计算的基础包,广泛用于数据分析、机器学习、深度学习等领域。
算术函数
如果参与运算的两个对象 都是ndarray,并且形状相同,那么会对位彼此之间进行(+ - * /)运算。NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和divide()。
算术函数的使用
a=np.arange(9,dtype=np.float).reshape(3,3)
b=np.array([10,10,10])
print(np.add(a,b))
print(a+b)
print(np.subtract(a,b))
print(a-b)
print(np.multiply(a,b))
print(a*b)
print(np.divide(a,b))
print(a/b)
算术函数中out参数的使用
x = np.arange(5)
y = np.empty_like(x)
np.multiply(x, 10, out=y)
print(y)
mod()函数的使用
numpy.mod() 计算输入数组中相应元素的相除后的余数。函数numpy.remainder() 也产生相同的结果。
a=np.array([10,10,30])
b=np.array([3,5,7])
print(np.mod(a,b))
print(np.remainder(a,b))
print(a%b)
统计函数
NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。 具体如下:
函数名 | 说明 |
---|---|
np.sum() | 求和 |
np.prod() | 所有元素相乘 |
np.mean() | 平均值 |
np.std() | 标准差 |
np.var() | 方差 |
np.median() | 中数 |
np.power() | 幂运算 |
np.sqrt() | 开方 |
np.min() | 最小值 |
np.max() | 最大值 |
np.argmin() | 最小值的下标 |
np.argmax() | 最大值的下标 |
np.cumsum() | 对数组中元素累积求和,可指定轴 |
np.cumprod() | 对数组中元素累积求积,可指定轴 |
np.ptp() | 计算一组数中最大值与最小值的差,可指定轴 |
np.unique() | 删除数组中的重复数据,并对数据进行排序 |
np.nonzero() | 返回数组中非零元素的索引 |
power()函数的使用
numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
x = np.arange(1,5)
y = np.empty_like(x)
np.power(x, 2, out=y)
print(y)
median ()函数的使用
a=np.array([4,2,1,5])
#计算偶数的中位数
print('偶数的中位数:'
,np.median(a))
a=np.array([4,2,1])
print('奇数个的中位数:'
,np.median(a))
a=np.arange(1,16).reshape(3,5)
print('调用median函数')
print(np.median(a))
print('调用median函数,axis=1 行的中值')
print(np.median(a,axis=1))
print('调用median函数,axis=0 列的中值')
print(np.median(a,axis=0))
mean ()函数的使用
numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。算术平均值是沿轴的元素的总和除以元素的数量。
a=np.arange(1,11).reshape(2,5)
print(np.mean(a))
print('调用mean函数 axis=0 列')
print(np.mean(a,axis=0))
print('调用mean函数 axis=1 行')
print(np.mean(a,axis=1))
函数的使用
a = np.random.randint(10,50,size=20)
np.max(a)
np.sum(a)
np.min(a)
np.max(a)
np.ptp(a)
np.unique(a)
np.nonzero(a)
其他常用函数
方法 | 说明 |
---|---|
np.tile() | 将数组的数据按照行列复制扩展 |
np.repeat() | 将数组中的每个元素重复若干次 |
roll() | 沿指定轴对数组元素进行移位 |
resize() | 重新调整数组的大小 |
place()/put() | 将数组中满足条件的元素/指定的元素替换为指定的值 |
np.savetxt() | 将数据保存到txt文件中 |
np.loadtxt() | 从文件中加载数据 |
np.genfromtxt() | 根据文件内容中生成数据,可以指定缺失值的处理等 |
np.any() | 如果数组中存在一个为True的元素(或者能转为True的元素),则返回True |
np.all() | 如果数组中所有元素都为True(或者能转为True的元素),则返回True |
np.where(条件,x,y) | 如果条件为True,对应值为x,否则对应值为y |
np.dot() | 将矩阵相乘 |
np.sort() | 对数组进行排序,返回一个新的排好序的数组,原数组不变 |
np.argsort() | 返回的是数组值从小到大排序后元素对应的索引值 |
tile()和repeat()函数的使用
a = np.arange(4)
#复制2次
np.tile(a,2)
#行列复制
np.tile(a,(3,2))
np.repeat(a,2)
a = np.arange(1,13).reshape(3,4)
np.repeat(a,2)
np.repeat(a,2,axis=0)
np.repeat(a,2,axis=1)
roll()函数的使用
#一维数组
#向后调3个
np.roll(a,3)
#向前调1个
np.roll(a,-1)
#二维数组
np.roll(aa,2)
np.roll(aa,2,axis=0)
resize()函数的使用
aa.reshape(4,3)#修改维度,元素个数必须相同
np.resize(aa,(5,6)) #resize重新调整数组的大小,元素个数可以不相同
replace()和put()函数的使
aa = np.random.randint(40,100,(3,4))
#小于60分的 全部替换为0
np.place(aa,aa<60,0)
#put()指定的索引处的元素替换为指定的值
aa = np.arange(1,13).reshape(3,4)
np.put(aa,2,100)
savetxt()和loadtxt()函数的使用
#保存
a = np.random.randint(-50,100,1000)
np.savetxt('savetxt.txt',a,fmt='%d')
#加载
b = np.loadtxt('savetxt.txt',dtype=int)
b
any()、all()函数的使用
#any函数 只要有一个元素为True,则结果返回True
#all函数 只有所有元素都为True,则结果返回True
x = np.array([False,True,True,1,None,0])
np.any(x)
np.all(x)
where()函数的使用
np.random.seed()
a = np.random.randint(20,100,10)
print(a)
print(np.where(a>50,True,False))
dot函数的使用
#dot函数 矩阵相乘
x = np.array([[1,2],[3,4]])
y = np.array([[2,3],[1,2]])
x.dot(y)
x.dot(3) #每个元素与3相乘
注意:矩阵相乘前提是,第一个矩阵的列数和第二个矩阵的行数要相同
数组排序
一维数组排序
排序中主要用到的方法是np.sort和np.argsort。其中np.sort()是对数组直接排序。而np.argsort()是返回排序后的原始索引。
a=np.array([5,2,4,6,1,9])
print('sort排序后:'
,np.sort(a))
print('argsort排序:'
,np.argsort(a))
二维数组排序
np.random.seed(44)
a=np.random.randint(100,size=(4,6))
#直接使用sort排序指定axis的值
print(np.sort(a,axis=0))
print(np.sort(a,axis=1))
按最后一列进行排序
#可以先获取最后一列的数组
b=a[:,-1]
print(b)
#获取最后一列数组排序后的原始索引
index=np.argsort(b)
#使用facy_indexing汇总数组
print(a[index])
numpy广播机制
两个数组相加
import numpy as np
# 在numpy中存在广播机制
a=np.array([0,1,2])
print(a+5)
b=np.array([5,5,5])
print(a+b)
维度不相同的数组相加
a=np.arange(3) #一行[0 1 2]
b=np.arange(3).reshape(3,1) #三行1列
'''
广播的规则
1,如果两个数组维度个数不同,那么小维度的数组形状会在
左边补1
2,如果两个数组形状在任何一个维度上都不匹配,数组的形
状会沿着维度为1的维度扩展到匹配上另一个数组的形状
3,如果没有维度形状为1,则会引发异常
0 1 2 0 0 0
0 1 2 1 1 1
0 1 2 2 2 2
'''
print(a+b)
标签:函数,python,元素,基础,print,数组,np,NumPy,axis
From: https://blog.csdn.net/2301_77698138/article/details/140673790