首页 > 编程语言 >python—NumPy基础(3)

python—NumPy基础(3)

时间:2024-07-25 14:00:55浏览次数:13  
标签:函数 python 元素 基础 print 数组 np NumPy axis

文章目录


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

相关文章

  • Python爬虫:代理ip电商数据实战
    引言:数据访问管理引发的烦恼作为一名Python博主,爬虫技能对于获取和分析数据至关重要,经常爬一下,有益身心健康嘛。爬虫技术对很多人来说,不仅仅是一种工具,更像是一种艺术,帮助我们从互联网中,捕捉到有价值的信息。我经常就会用爬虫来爬取一些所需的数据,用来进行数据分析和模型训......
  • python科学计算:加速库numba —— 安装和试用
    安装(anaconda环境下)condainstallnumbaDemo代码:fromnumbaimportjitfromnumpyimportarangeimportnumpyimporttime@jitdefsum2d(arr):M,N=arr.shaperesult=0.0foriinrange(M):forjinrange(N):result+=a......
  • Python - Selenium抓取淘宝直播间评论(可使用无头模式)
    Python-Selenium抓取淘宝直播间评论(可使用无头模式)下面介绍如何使用python中的selenium简单抓取淘宝直播间实时评论。友情提醒,仅供学习交流使用,请勿用于非法用途!一、创建python项目1.在目录下新建main.py和venv虚拟环境:创建虚拟环境:python-mvenvvenv激活虚拟环......
  • 需要帮助来提取此 XML 节点 - Python 中的 Excel 连接字符串
    我有一个Python程序,打开Excel(XLSX)文件,并尝试查找<connection>节点。这是connections.xml文件中的完整XML。<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><connectionsxmlns="http://schemas.op......
  • 【python】Python中采集Prometheus数据,进行数据分析和可视化展示
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 使用python3拼接rgb.txt与depth.txt为associate.txt(适用于GCNV2_SLAM中TUM数据集的运
    这里以GCNV2_SLAM中TUM数据集的运行为例子:安装gnv2_slam可以参考:GCNv2_SLAM-CPU详细安装教程(ubuntu18.04)-CSDN博客首先下载数据集ComputerVisionGroup-DatasetDownload下载后通过该命令解压:tar-xvfrgbd_dataset_freiburg1_desk.tgz打开后,你可以发现:在该数据集......
  • 【Python】到底什么是字符串格式化?
    字符串格式化的目的:在字符串中动态地插入数据或表达式。字符串格式化的对象:要插入到字符串中的数据。在详细解释之前,先引入第一种字符串格式化的方法name=input('请输入你的名字:')gender=input('请输入你的性别:')age=input('请输入你的年龄:')print(f'你的名字是{......
  • Python PDF 编辑器
    我将制作一个PDF编辑器,它可以更改PDF中的单词,而无需更改文本的来源。这是我的代码,到目前为止,它所做的一切都是正确的,但我可以获得文本颜色和文本大小。importpymupdfimportos#OpenthePDFdocumentdoc=pymupdf.open('input.pdf')#Loadthecustomfontfi......
  • JSON 响应中的字符串值变成 Python pandas datafram 中的数值
    我正在使用Python从RESTAPI中提取数据并将其存储在SQL数据库中。除了响应中的一个JSON值之外,一切工作正常。JSON响应[{"pbxId":"XXXcxx","site":"XXXGroup-SydneyOffice","name":"XXXXService","extension":......
  • Qt基础 | QSqlQueryModel 的使用 | QSqlQuery的使用
    文章目录一、QSqlQueryModel的使用1.主窗口类定义2.构造函数3.打开数据库3.1添加SQLite数据库驱动、设置数据库名称、打开数据库3.2设置数据模型、选择模型、界面组件与模型数据字段间的数据映射4.记录移动二、QSqlQueryModel和QSqlQuery联合使用1.主窗口Main......