NumPy应用(二)

        numpy高效的处理数据,提供数组的支持, python 默认没有数组。 pandas scipy
matplotlib 都依赖 numpy
  1. pandas主要用于数据挖掘,探索,分析
  2. maiplotlib用于作图,可视化
  3. scipy进行数值计算,如:积分,傅里叶变换,微积分
  4. statsmodels用于统计分析
  5. Gensim用于文本挖掘
  6. sklearn机器学习, keras深度学习
        Numpy是一个 Python 包,它代表 “Numeric Python”. 它是一个有多维数组对象和用于处理数组的集合组成的库。Numeric, Numpy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005 年, Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 该开源项目有很多贡献者。
        Numpy的主要对象是同种元素的多维数组,这是一个所有的元素都是一种类型,通过一个正整数元素索引的元素表格,在Numpy 中维度( dimensions )叫做轴 (axes), 轴的数叫做秩(rank . Numpy 的数组类被称为 ndarray ,通常被称作数组。

       

1 array 基本信息以及生成各种常见 array 基本操作,生成 array ,得到对应的基本信息
1.1 查看
import numpy as np
array = np.array([[1,2,3],[2,3,4]])
print(array)
print(array.dtype) #查看每个元素的类型
print(array.ndim) #查看array的维度
print(array.shape) #查看形状
print(array.size) #所有元素的个数
Out:
[[1 2 3]
[2 3 4]]
int32
2
(2, 3)
6
        array的生成就是 np.array(list) ,本质上是把定义的 list 转换成 array ,因为 array 可以更加方便地计算和操作,比如矩阵的转置和相乘。
1.2 dtype
        
        不设置type,则默认为 int64, 如果设置为 int 类型而没有设置字节大小则还是默认为int64,如果元素本身为小数,则默认为 float64
        所以如果用int64 ,则如果元素都为整数则不需要设置默认即可,设置其他类型需要设置, float类似。
a = np.array([2, 23, 4], dtype=np.float32)
print(a)
[ 2. 23. 4.]
123
1.3 常见array格式生成
#生成shape为(2,3)全为0的array
b= np.zeros((2, 3), dtype=np.int)
print(b)
##生成shape为(2,3)全为1的array
c = np.ones((2,3),dtype=np.str)
print(c)
# 生成shape=(3, 4)的全为接近空的array
d = np.empty((3, 4))
print(d)
# 生成array 10到21 每隔3的一增加,for循环中主要使用
e = np.arange(10,21,3)
print(e)
# reshape能够重新定义矩阵的形状
f = np.arange(12).reshape((3,4))
print(f)
#等间隔产生6个数
g = np.linspace(1.0, 10.0, 6).reshape((3, 2))
123456789101112131415161718
Out
[[0 0 0]
[0 0 0]]
[['1' '1' '1']
['1' '1' '1']]
[[1.26043630e-311 1.26043661e-311 7.54894003e+252 2.95479883e+137]
[1.42800637e+248 2.64686750e+180 1.09936856e+248 6.99481925e+228]
[7.54894003e+252 7.67109635e+170 2.64686750e+180 5.63234836e-322]]
[10 13 16 19]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 1. 2.8]
[ 4.6 6.4]
[ 8.2 10. ]]
123456789101112131415
2、计算
2.1 加减乘除
import numpy as np
a = np.array([10, 20, 30, 40])
b = np.arange(4)
c = a + b
print(c)
d = np.array([[1, 2],[3, 4]])
e = np.arange(1, 8, 2).reshape((2, 2))
print(d*e)
print(d/e)
#维度不同下的计算
a = np.array([[1,2,3,4],[6,7,8,9]])
b = np.arange(1,5)
print(a+b)
print(a*b)
print(a/b)
1234567891011121314151617
Out:
[10 21 32 43]
[[ 1 6]
[15 28]]
[[1. 0.66666667]
[0.6 0.57142857]]
[[ 2 4 6 8]
[ 7 9 11 13]]
[[ 1 4 9 16]
[ 6 14 24 36]]
[[1. 1. 1. 1. ]
[6. 3.5 2.66666667 2.25 ]]
1234567891011121314151617
2.2 平方,三角函数,比较元素大小 , 矩阵
import numpy as np
a = np.array([10, 20, 30, 40])
b = np.arange(4)
#平方
print(a**2)
#三角函数
print(np.sin(a))
#元素比较
print(b<3)
print(b == 3)
#矩阵计算
d = np.array([[1, 2],[3, 4]])
e = np.arange(1, 8, 2).reshape((2, 2))
print(d.dot(e))
print(np.dot(d,e))
123456789101112131415
np.dot(d, e) d.dot(e) 一样,都为 d e 进行矩阵相乘
Out
[ 100 400 900 1600]
[-0.54402111 0.91294525 -0.98803162 0.74511316]
[ True True True False]
[False False False True]
[[11 17]
[23 37]]
[[11 17]
[23 37]]
12345678
3、随机数和max,min,sum
# 随机产生shape为(2,4)的一个array,每个元素都为0-1之间随机生成
f = np.random.random((2, 4))
print(f)
[[0.2651074 0.06022938 0.03103761 0.29572785]
[0.73063531 0.45682806 0.30643989 0.61639371]]
123456
        sum为总, min 为最小, max 为最大,如果不设置 axis 维度参数的话,则都为整个 array
的元素来说,但一般我们运用都只是算某个维度的 sum,max,min ,在二维数据中, axis=0
表行,第一个维度, axis=1 ,代表列为第二个维度,其实这么记并不是很好很有可能记错,
我一般都是这么记得: axis=0 为行,那意思就是每一行都要算呗?算完那不就是一列的每一
行算个数被, axis=1 类推,多维数据类推即可。
4、矩阵转置和排序,以及元素比较大小重置元素方法
        每一行进行重新大小排序当然也有axis 参数配置,根据 axis 参数说明来操作
numpy.clip(a, a_min, a_max, out=None)
a : 输入的数组
a_min: 限定的最小值 也可以是数组 , 如果为数组时 shape 必须和 a 一样
a_max: 限定的最大值 也可以是数组 ,shape a 一样
out :剪裁后的数组存入的数组
import numpy as np
# 随机产生shape为(2,4)的一个array,每个元素都为0-1之间随机生成
c = np.arange(14, 2, -1).reshape((3, 4))
print(c)
[[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
#排序
print(np.sort(c))
"""
[[11 12 13 14]
[ 7 8 9 10]
[ 3 4 5 6]]
"""
#转置
print(np.transpose(c))
print(c.T)
"""
[[14 10 6]
[13 9 5]
[12 8 4]
[11 7 3]]
"""
#c矩阵中的元素小于5的等于5,大于9的等于9
print(np.clip(c, 5, 9))
"""
[[9 9 9 9]
[9 9 8 7]
[6 5 5 5]]
"""
1234567891011121314151617181920212223242526272829303132
5、平均值 中值 diff cumsum
cumsum :每个元素变成当前元素+前面所有元素的和
c = np.arange(14, 2, -1).reshape((3, 4))
print(np.cumsum(c))
[ 14 27 39 50 60 69 77 84 90 95 99 102]
1234
np.diff(a) # 当前元素减去前面元素的差
[[-1 -1 -1]
[-1 -1 -1]
[-1 -1 -1]]
123
6、索引
6.1 最大最小、非零索引
a = np.array([[2, 6, 0, 4],[4, 8, 9, 1],[10, 2, 3, 11]])
print(np.argmax(a))
print(np.argmax(a,axis=1))
print(np.argmax(a,axis=0))
11#值
[1 2 3] #索引
[2 1 1 2]
1234567
6.2 取行、取列、取值
a[:, 1:2] : 代表行所有也就是一列要的话,这一列的每一行都要, 1:2 对应的从索引为
1的列来算移植相当于取到索引为( 2-1 )的列, 2 为取的最高索引大一个。所以总体来讲
就是首先取每一行,之后在行里取索引1 -> 1的列元素,所以为最终的结果列向量。
a[:, 1:3] :按照上面的分析则每一行都要,列要索引为 1 (3-1) 的元素,那就是索引为 1
2 的所有元素,也就是第二列和第三列的元素。
a[1, 1:3] :为 a[:, 1:3] 的索引为1的所有元素。
这里需要注意的是
a[:, 1] # 索引为1的列 , 生成为行向量,
a[:, 1:2] # 索引为1的列,生成为列向量
因为两种取值的思想不一样,最终造成的结果也不一样,一个是直接取,所以维度减少
了一个,另一个是在原本维度上截取,最终还是原来的维度。
import numpy as np
a = np.arange(3, 15).reshape((3, 4))
print(a)
print(a[1]) #索引为1的行,同下
print(a[:][1])
#取值 第三行第二列,如下两种表示
print(a[2,1])
print(a[2][1])
print(a[:, 1]) #索引为1的列,生成为行向量
print(a[:, 1:2]) #索引为1的列,生成为列向量
print(a[:, 1:3])
123456789101112131415
Out:
[[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
[ 7 8 9 10]
[ 7 8 9 10]
12
12
[ 4 8 12]
[[ 4]
[ 8]
[12]]
[[ 4 5]
[ 8 9]
[12 13]]
123456789101112131415161718
6.3 迭代元素和降维
降维:
a.flatten() # 所有元素变成一维
import numpy as np
a = np.arange(3, 15).reshape((3, 4))# 数据都是下取上差一个取到
#迭代取所有行
for row in a:
print(row)
for column in a.T:
print(column)
print(a.flatten()) # 所有元素变成一维
print()
b = np.array([[1, 2, 3]])
#每个元素打印
for item in a.flat:
print(item)
12345678910111213141516171819
7、合并分割
np.vstack: 按垂直方向(行顺序)堆叠数组构成一个新的数组
np.hstack: 按水平方向(列顺序)堆叠数组构成一个新的数组
stack() 函数
函数原型为: stack(arrays, axis=0) arrays 可以传数组和列表。
import numpy as np
a = np.array([1, 1, 2])
b = np.array([2, 3, 4])
c = np.vstack((a, b))
print(c)
print(np.hstack((a,b)))
a = np.array([[1],[2],[3]])
b = np.array([[4],[5],[6]])
print(np.hstack((a,b)))
a=[[1,2,3],
[4,5,6]]
print("列表a如下:")
print(a)
print("增加一维,新维度的下标为0")
c=np.stack(a,axis=0)
print(c)
print("增加一维,新维度的下标为1")
c=np.stack(a,axis=1)
print(c)
12345678910111213141516171819202122232425
Out:
[[1 1 2]
[2 3 4]]
[1 1 2 2 3 4]
[[1 4]
[2 5]
[3 6]]
列表a如下:
[[1, 2, 3], [4, 5, 6]]
增加一维,新维度的下标为0
[[1 2 3]
[4 5 6]]
增加一维,新维度的下标为1
[[1 4]
[2 5]
[3 6]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软远程连接工具:Microsoft Remote Desktop for Mac 中文版

Microsoft Remote Desktop 是一款由微软开发的远程桌面连接软件&#xff0c;它允许用户从远程地点连接到远程计算机或虚拟机&#xff0c;并在远程计算机上使用桌面应用程序和文件。 下载地址&#xff1a;https://www.macz.com/mac/5458.html?idOTI2NjQ5Jl8mMjcuMTg2LjEyNi4yMz…

C++进阶之AVL树+模拟实现

目录 目录 一、AVL树的基本概念 1.1 基本概念 二、AVL树的模拟实现 2.1 AVL树节点的定义 2.2 插入操作 2.3 旋转操作 2.4 具体实现 一、AVL树的基本概念 1.1 基本概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十四)- 微服务(4)

目录 8. http客户端Feign 8.1 feign远程调用 8.2 feign自定义配置 8.3 feign性能优化 8.4 feign最佳实践 8. http客户端Feign 8.1 feign远程调用 RestTemplate存在的问题 &#xff1a; 代码可读性差 参数复杂URL难以维护 Feign是声明式的http客户端 使用步骤 &#xf…

飞书API(11):阿里云MaxCompute分区表入库

一、引入 前面入库阿里云 MaxCompute 的数据都是读取之后直接写入&#xff0c;保留数据最新的状态&#xff0c;如果我要保留历史的状态&#xff0c;怎么办呢&#xff1f;MaxCompute 表有一个分区功能&#xff0c;可以自行定义分区。我们可以使用 MaxCompute 表的分区功能&…

Python | A + B问题||

既然是持续性的输入&#xff0c;说明在循环做输入n这个操作&#xff0c;那我们就需要使用到上一节中使用的while while True:try:# 将输入的 N 转换成整数N int(input())except:break 列表 for循环&#xff1a;可遍历列表、字符串、内置的range()函数 for item in list:# …

生产问题临时解决方案

临时解决方案的目标是迅速恢复系统的可用性&#xff0c;确保服务不中断&#xff0c;同时为深入分析和解决根本问题争取时间。以下是一些常见的临时解决方案&#xff1a; 1. 重启服务 重启应用服务器&#xff1a;很多时候&#xff0c;重启可以释放资源&#xff0c;缓解瞬时压力…

Express 框架

1. Express 框架的功能 Express 框架提供了丰富的功能和工具&#xff0c;使开发者能够更轻松地构建 Web 应用程序。以下是 Express 框架的一些主要功能&#xff1a; 路由功能&#xff1a;Express 框架提供了简单易用的路由功能&#xff0c;可以根据不同的 URL 请求来执行不同…

远程自动锁定平面

目录 Ubuntu 系统上 方法一&#xff1a;使用 SSH 重新连接 方法二&#xff1a;解锁当前会话 方法三&#xff1a;通过 SSH 解锁会话 方法四&#xff1a;禁用自动锁屏&#xff08;如果合适&#xff09; windows系统 方法三&#xff1a;修改组策略设置 Ubuntu 系统上 远程…

重生之我要精通JAVA--第七周笔记

文章目录 IO流字符流字符流原理解析flush和close方法 文件拷贝代码文件加密解密修改文件中的数据 缓冲流字节缓冲流字符缓冲流例题 转换流序列化流序列化流/对象操作输出流 反序列化流序列化流/反序列化流的细节汇总打印流字节打印流字符打印流 解压缩流压缩流Commons-io常见方…

网络空间安全数学基础·环

4.1 环与子环 &#xff08;理解&#xff09; 4.2 整环、除环、域 &#xff08;熟练&#xff09; 4.3 环的同态、理想 &#xff08;掌握&#xff09; 4.1 环与子环 定义&#xff1a;设R是一非空集合&#xff0c;在R上定义了加法和乘法两种代数运算&#xff0c; 分别记为ab和a…

122.买卖股票的最佳时机Ⅱ

思考 把题目抽象 1 2 3 4 5 1 2 3 4 5 低买高卖&#xff0c;如果递增可以先不卖&#xff0c;但是一旦递减&#xff0c;比如第五天和第六天&#xff0c;降低了&#xff0c;应该在第五天卖&#xff0c;第六天买 注意特殊情况&#xff0c;如果 1 2 3 4 5 这个没有1中的改变&…

java收徒、java面试辅导、java辅导、java就业辅导

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

MMPose-RTMO推理详解及部署实现(下)

目录 前言一、RTMO推理(Python)1. RTMO预测2. RTMO预处理3. RTMO后处理4. RTMO推理 二、RTMO推理(C)1. ONNX导出2. RTMO预处理3. RTMO后处理4. RTMO推理 三、RTMO部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出4. engine生成5. 源码修改6. 运行…

zigbee浅谈

zigbee技术是一种低速低功耗&#xff0c;短距离无线通信技术&#xff0c;主要应用于智能家居、工业自动化、农业互联网、健康医疗、环境监测等。和蓝牙的对比&#xff1a; 两者都使用2.4GHz频段&#xff0c;最大传输距离可达100米&#xff0c;可实现点对点&#xff0c;点对多点…

HCP;IDA;ABIDE(孤独症)磁共振数据库下载

ABIDE https://fcon_1000.projects.nitrc.org/indi/abide/abide_II.html 根据研究目的和研究目的选择不同站点的数据—不同站点的数据 HCP-IDE https://ida.loni.usc.edu/project_info.jsp 点击下载-图像集合 选择研究对象 全选-下载

git本地仓库与远程仓库关联

背景 当我们在本地创建了一个项目以后&#xff0c;想要推送到远程分支&#xff0c;可以按照如下的步骤进行操作 步骤 1、创建远程的仓库 2、本地初始化仓库&#xff1a;git init 3、关联远程分支&#xff1a;git remote add origin https://xxxxx.git 4、比如远程分支有.…

边缘密度分布图 | ggExtra包/aplot拼图/ggpubr包 等的实现方法

概述&#xff1a;aplot 拼图效果好 根据网友探索[1]&#xff0c;总结如下&#xff1a; ggExtra 包的拼图间隙有点大&#xff0c;图例在主图和边缘图之间&#xff0c;除非去掉图例&#xff0c;否则没法看。aplot包的默认拼图间隙很小&#xff0c;比较美观&#xff0c;图例在外…

Cyber Weekly #9

赛博新闻 1、OpenAI&#xff1a;GPTs向全部用户开放&#xff0c;使用GPT-4o OpenAI宣布所有ChatGPT免费用户现在可以在GPT商店中使用GPTs&#xff0c;并且这些GPTs现在使用最新的GPT-4o模型。 2、马斯克 vs. Yann LeCun 这一周&#xff0c;AI圈最热闹的莫过于马斯克和LeCun的…

Python | MATLAB | R 心理认知数学图形模型推断

&#x1f3af;要点 &#x1f3af;图形模型推断二元过程概率&#xff1a;&#x1f58a;模型1&#xff1a;确定成功率 θ 的后验分布 | &#x1f58a;模型2&#xff1a;确定两个概率差 δ \delta δ 的后验分布 | &#x1f58a;模型3&#xff1a;确定底层概率&#xff0c;后验预…

【算法篇】归并排序算法JavaScript版

归并排序 归并排序&#xff08;Merge Sort&#xff09;是一种分治&#xff08;Divide and Conquer&#xff09;思想的典型应用&#xff0c;它将一个大的问题拆分成两个或更多个小问题&#xff0c;解决这些小问题&#xff0c;然后将解决的小问题合并起来&#xff0c;从而完成对…