NumPy(Numerical Python)是 Python 生态中用于科学计算的核心库,提供高性能的多维数组对象(ndarray)及相关的数学运算工具。其核心功能围绕数组操作、线性代数、随机数生成等,是数据科学、机器学习等领域的基础依赖。

numpy核心数据类型

        NumPy 的核心是 ndarray(N-dimensional array),一种高效存储和操作多维数据的容器。与 Python 原生列表相比,ndarray 支持矢量化运算,避免循环,显著提升性能。

  • 特性
    • 固定大小,创建后不可变(元素可修改)。
    • 所有元素类型相同(dtype 指定)。
    • 支持广播(Broadcasting)机制实现不同形状数组的运算。

numpy安装

        这个我们可以直接在命令行窗口或者终端进行pip install numpy就行了,但是可能会比较慢,我们这里加上清华的镜像源

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

创建一个ndarray对象

1 直接创建

import numpy as npa=np.array([0,1,2,3,4,5,6,7,8,9,10,11,12,13])
print(type(a))

这样我们就创建了一个数组(如果我们想创建一个多维数组对象,我们直接传入一个多维数组就行了),我们还查看了一下,我们创建了一个什么类型的数据,结果输出<class 'numpy.ndarray'>,这样我们就要记得,numpy创建的数据类型为<class 'numpy.ndarray'>

2 用可迭代对象arrang创建

import numpy as np
r1 = np.arange(0,9,3)
print(r1)

这里我们创建了一个一维的数组对象,可迭代对象内容为 [0 3 6]

3 用linspace创建

import numpy as np
r2 = np.linspace(0,1,5)
print(r2)

 先给出结果[0.   0.25 0.5  0.75 1.  ]

从结果可以看出,有三个参数,前两个为区间的左右两头数值,最后一个表示个数,要注意这个数组内容都是浮点型的,对于arrange相比,这个左右区间都是闭的。

4 创建特殊数组

import numpy as np
a=np.zeros(3)
print('一维:\n',a)
b=np.zeros((3,3))
print('二维:\n',b)
c=np.zeros((3,3,3))
print('三维:\n',c)

输出结果:

 这里我们创建了几个全0矩阵,以为我们只能传入一个参数。那么我们要传入几个参数的术后,我们要传入一个数组,数组中几个数表示几位的。大小就是数组的那样n*n*n的,同样全一数组也是这样的,用np.ones()就不展示了。

5 full()创建矩阵

import numpy as np
a=np.full((3,3),6)
print(a)

输出结果:

我们可以看到,full可以提供两个参数,一个来控制矩阵的维度大小,另有一个控制填充值。

6 创建单位矩阵

import numpy as np
a=np.eye(5,5)
print(a)

 输出

这里我们输出了一个矩阵,对角线全一,如果列和行不相同,那么就从左一开始为一,大家可以试下。

另外我们可以通过对我们创建的这个多维数组对象进行查看

我们可以看到这里有许多方法 ,其中包含许多方法,例如reshape,dot,copy,ndim等等,下面我们来说些常用的

numpy常用操作

1 查看矩阵基本数据类型

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print('矩阵形状',a.shape)
print('矩阵维度',a.ndim)
print('矩阵大小',a.size)
print('矩阵储存位置',a.data)
print('每个矩阵数据存储所占位置',a.itemsize)

输出结果

2 基本运算

import numpy as np
array1 = np.array([[1,2],[3,4]])
array2 = array1 * 2print(array1 + array2)  # 加法
print(array1 - array2)  # 减法
print(array1 * array2)  # 乘法
print(array1 / array2)  # 除法
print(array2 % array1)  # 取余
print(array1 // array2) # 取整

输出结果 

3 reshape方法

这个既可以升维度也可以降维度。

import numpy as np
a=np.array([1,2,3,4,5,6,7,8])
b=a.reshape(2,4)
c=a.reshape(2,-1)
print(a)
print(b)
print(c)

 这里我展示了两种修改数据形状的方法,一种给出确定的大小,然后就可以转化到自己想要的了,还有一种给出一个确定的,剩下可以让机器自己算,注意这里要可以整除,不然会报错。

我们这里还要注意,a.reshape(2,4)是又创建了一个副本,并不是对原来的数据进行修改,如果要对原本数据进行修改,我们要对他进行赋值例如a=a.reshape(2,4).

4 resize()方法

import numpy as np
a=np.array([[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8]])
b=a.resize(2,2)
print(a)
print(b)

输出

resize是一个可以调整矩阵大小的方法。可以调整到自己指定的大小。这里调整后的数据是从第一行开始取,作为我们调整后的数据。

注意!这里a.resize(2,2)是一个None值,说明我们调整的是a原本数据

5 repeat

import numpy as np
a=np.array([1,2,3])
c=a.repeat(3)
print(c)

 输出

这个是将矩阵中每个值x参数个,不是数值x而是x个数。

6 选取

                        ​​​​​​​        

import numpy as np
a=np.array([[1,2,3,4,5,6,7,8],[9,10,11,12,13,14,15,16],[17,18,19,20,21,22,23,24]])
print(a[1:3,2:8])

结果

我们可以根据矩阵进行想列表中切片那样,进行选取,拿第一个参数表示第一维为例,如果是[0:3]就表示从第一行到第二行的全选中了,[1:]表示第二行以及后面的。后面参数也是这样。

7 flatten()

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=a.flatten()
print(b)
#c = a.ravel()  有相同的作用

输出

这个函数就相当于np.reshape(-1),revel也可以,但是flatten用到最多就是把矩阵展开变成一维的

8 矩阵的基本运算

点乘

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.dot(a,[[2,2,2],[2,2,2],[2,2,2]]))
print(a.dot([[2,2,2],[2,2,2],[2,2,2]]))

输出 

这里我用了两种点乘的方法,输出结果一样。这里是矩阵与矩阵之间的相乘。

这里还有点需要注意的是,矩阵直接直接相乘是a*b,点乘是dot(a,b),矩阵直接相乘也可以a*2这样可以直接将矩阵的数值扩大二倍。

转置

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=a.T
print(a)
print(b)

输出直接用a.T来实现,这里也是生成了一个副本不是对源数据进行修改 

求逆

这里是求伪逆,不管这个矩阵有没有可逆,都可以求所以我们要验证下

import numpy as np
a=[[1,2],[3,4]]
b=np.linalg.inv(a)
print(b)
print(np.dot(a,b))

输出

 9 连接

import numpy as np# 生成基数组
array1 = np.array([[1,2,3],[4,5,6]])
array2 = np.array([[7,8,9],[10,11,12]])# 水平组合(沿列方向拼接)
a3 = np.hstack((array1, array2))     # 水平拼接array1和array2
a4 = np.hstack((array2, array1))     # 水平拼接array2和array1
a5 = np.hstack((array1, array2, array1))  # 三数组水平拼接
a6 = np.concatenate((array1, array2), axis=1)  # 等价于vstack
print(a3)
print(a4)
print(a5)# 垂直组合(沿行方向拼接)
a7 = np.vstack((array2, array1))     # 垂直拼接array2和array1
print(a6)# 通用连接函数(axis=0为垂直方向)
a8 = np.concatenate((array1, array2), axis=0)  # 与vstack效果相同
print(a8)

输出​​​​​​​

上面我们采用了三种方法,分别是三种方法一种垂直方向,一种水平方向,还有给用concatenate来实现。可以参照对应输出来看。

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

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

相关文章

Redis 主从同步对象模型

淘汰策略 对最外层的key进行淘汰 expire(秒)/pexpire(毫秒) ttlmaxmemory:最大内存的一半(持久化fork()子进程) 数据迁移需要额外的空间 maxmemory-policy 提供淘汰机制 默认不会淘汰 lru 最近最少使用 lfu最近最少频次 voltaile 对由expire的进行淘汰持久化: fork:写时复制原理…

C++ 使用 constexpr 、查表法、分治法加速位镜像翻转

代码////// brief 左右翻转位。////// note 翻转后&#xff0c;最低位位将变为最高位&#xff0c;最高位将变为最低位。//////template <typename T>requires(std::is_same_v<T, uint8_t>)constexpr T Reverse(T value){int32_t bit_count sizeof(T) * 8;for (int…

知识库搭建之Meilisearch‘s 搜索引擎 测评-东方仙盟测评师

windows 启动后 启动成功后关键信息 Config file path: "none" Database path: "./data.ms" Server listening on: "http://localhost:7700" Environment: "development" Commit SHA: &quo…

【笔记】Anaconda 重装后虚拟环境写入路径异常的完整排查与解决过程

Anaconda 安装[仅为当前用户安装/为所有用户安装]选项对环境变量设置的影响_anaconda没有添加环境变量-CSDN博客 Anaconda 路径治理指南&#xff1a;路径精简、权限优化与环境隔离-CSDN博客 Windows系统下手动升级Anaconda的详细指南_anaconda升级-CSDN博客 Conda 命令大全&…

QuecPython-正则表达式

该模块通过正则表达式匹配数据。目前支持的操作符较少&#xff0c;部分操作符暂不支持。示例&#xff1a;import ureres $GNRMC,133648.00,A,3149.2969,N,11706.9027,E,0.055,,311020,,,A,V*18 $GNGGA,133648.00,3149.2969,N,11706.9027,E,1,24,1.03,88.9,M,,M,,*6C $GNGLL,3…

QT窗口(3)-状态栏

QT窗口&#xff08;3&#xff09;-状态栏 状态栏 代码如下&#xff1a;//存在就获取&#xff0c;不存在就创建QStatusBar*statusBarthis->statusBar();this->setStatusBar(statusBar);//显示一个临时消息statusBar->showMessage("这是一个状态消息");运行结…

更具个性的域名:解锁互联网多元价值的钥匙

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

深度学习模块实践手册(第十一期)

46、缩放点积注意力模块论文《Attention Is All You Need》1、作用&#xff1a; 缩放点积注意力&#xff08;Scaled Dot-Product Attention&#xff09;是 Transformer 模型的核心组件&#xff0c;旨在解决序列建模中长距离依赖关系捕捉的问题。传统的循环神经网络&#xff08;…

C++高级技术详解

C高级技术详解 目录 模板 (Templates)右值和移动语义 (Rvalue and Move Semantics)定位 new (Placement new)强类型 (Strong Types)智能指针 (Smart Pointers)容器和算法 (Containers and Algorithms)Lambda表达式常量表达式 (constexpr)多线程和并发 (Multithreading and Co…

跨境卖家紧急自查,Endryko Karmadi四季版画版权维权

25年7月2日&#xff0c;Keith律所代理印尼艺术家Endryko Karmadi发起全新版权维权行动。案件基本情况&#xff1a;起诉时间&#xff1a;2025-7-2案件号&#xff1a;25-cv-07436品牌&#xff1a;Endryko Karmadi Work原告&#xff1a;Endryko Karmadi 原告律所&#xff1a;keith…

M3088NL是一款网络滤波器/变压器支持100M和1000M网络环境,适用于高速网络传输场景M3088

M3088NL是一款网络滤波器/变压器&#xff0c;主要特点如下&#xff1a;兼容性 支持100M和1000M网络环境&#xff0c;适用于高速网络传输场景。 ‌封装形式 采用SOP/SOIC封装&#xff0c;便于电路集成。 ‌应用场景 常用于网络电话、开关电源等需要稳定电流的设备&#xff0c;符…

PyQt动态布局管理器:QSplitter详细指南

PyQt动态布局管理器&#xff1a;QSplitter详细指南 QSplitter简介 在PyQt中&#xff0c;除了常见的QVBoxLayout、QHBoxLayout等静态布局管理器外&#xff0c;QSplitter提供了一种动态布局解决方案。QSplitter允许用户通过拖拽分隔条来实时调整控件大小&#xff0c;为应用程序提…

Java设计模式之行为型模式(备忘录模式)实现方式详解

最近看到一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 一、基础实现结构 角色定义与代码骨架 备忘录模式包含三个核心角色&#xff0c;其协作关系如下&#xff1a; Originator&#xff08;发起人&…

k8s:离线部署tomcatV11.0.9,报Cannot find /opt/bitnami/tomcat/bin/setclasspath.sh

本文记录了在离线环境下部署Tomcat容器时遇到的权限问题及解决方案。在Docker环境中运行Tomcat时出现&quot;找不到setclasspath.sh&quot;错误&#xff0c;通过添加--security-opt seccompunconfined参数解决。在Kubernetes环境中部署时出现相同问题&#xff0c;通过设置…

Linux操作系统之线程(五):线程封装

目录 前言 一、线程ID及进程地址空间布局 二、线程栈与线程局部存储 三、线程封装 总结&#xff1a; 前言 我们在上篇文章着重给大家说了一下线程的控制的有关知识。 但是如果我们要使用线程&#xff0c;就得那这pthread_create接口直接用吗&#xff1f;这样岂不是太过麻…

【物理与机器学习】从非平衡热力学到扩散模型

[toc] 0.引子:从非平衡热力学开始 1.架构简介 2.反向过程的具体推导与 DDPM 改进摘要&#xff1a;扩散模型将非平衡热力学的“噪声注入—去噪逆转”理念注入生成建模中。DDPM&#xff08;Denoising Diffusion Probabilistic Models&#xff09;在 SD2015 的基础上&#xff0c;通…

Git常用命令详解:从入门到精通

前言 Git作为当今最流行的分布式版本控制系统&#xff0c;已经成为开发者必备的技能之一。无论你是独立开发者还是团队协作&#xff0c;掌握Git的基本操作都能极大提高工作效率。本文将详细介绍Git的常用命令&#xff0c;帮助你快速上手并精通Git的基本使用。 一、Git基础概念…

Vue-22-通过flask接口提供的数据使用plotly.js绘图(一)

文章目录 1 任务背景 2 Flask提供接口(server.py) 2.1 原始代码 2.2 跨域问题 3 Vue3获取数据并渲染Plotly图表 3.1 新建工程 3.2 程序 3.2.1 index.html(入口) 3.2.2 cpmponents/Plot.vue(子组件) 3.2.3 App.vue(父组件) 3.2.4 main.ts 3.3 展示 4 选择图表类型绘图 4.1 App.v…

【mysql】换主键

需求&#xff1a;曲库表的主键错了&#xff0c;原先设置的是(sang_id),应该设置为&#xff08;sang_name,singer&#xff09;联合主键。-- &#xff08;0&#xff09;先备份数据&#xff0c;我这里没备份 -- &#xff08;1&#xff09;进行主键的切换之前&#xff0c;要进行一些…

Redis原理之缓存

上篇文章&#xff1a; Redis原理之集群https://blog.csdn.net/sniper_fandc/article/details/149141342?fromshareblogdetail&sharetypeblogdetail&sharerId149141342&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目录 1 Redis作为MySQL…