Numpy(1/3):基础知识

python中的numpy基础知识 numpy的基础知识总结 numpy是一个数据包,里面包含了关于多维数组对象和用于处理数组的例程集合组成的库。博主近期对系统性的python的numpy的知识进行了一下总结。 一.numpy中的数组的创建与某些基础操作 (1)通过列表,元组等集合体为中介创建np.array x = np.array(((1,2,3),(1,2,3))) y = np.array([[1,2,3],[1,2,3]]) print(x==y)#成为了相同的列表 (2)通过numpy的函数创建数组 np.arange(int) 阅读详情

目录

一、NumPy Ndarray 对象

二、NumPy 数据类型

三、Numpy数据类型对象 (dtype)

四、NumPy 数组属性

五、NumPy 创建数组 

六、NumPy 从已有的数组创建数组

七、NumPy 从数值范围创建数组 

八、NumPy 切片和索引

九、NumPy 高级索引

十、NumPy 广播(Broadcast)

十一、NumPy 迭代数组


一、NumPy Ndarray 对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。

  • 数据类型或 dtype,描述在数组中的固定大小值的格子。

  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。

  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

二、NumPy 数据类型

三、Numpy数据类型对象 (dtype)

数据类型对象(numpy.dtype 类的实例)用来描述与数组对应的内存区域是如何使用,它描述了数据的以下几个方面::

  • 数据的类型(整数,浮点数或者 Python 对象)
  • 数据的大小(例如, 整数使用多少个字节存储)
  • 数据的字节顺序(小端法或大端法)
  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分
  • 如果数据类型是子数组,那么它的形状和数据类型是什么。
numpy.dtype(object, align, copy)
#object - 要转换为的数据类型对象
#align - 如果为 true,填充字段使其类似 C 的结构体。
#copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

四、NumPy 数组属性

NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。

五、NumPy 创建数组 

ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建。

  1. numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组;
  2. numpy.zeros方法创建指定大小的数组,数组元素以 0 来填充;
  3. numpy.ones方法创建指定形状的数组,数组元素以 1 来填充;
import numpy as np
 
# 默认为浮点数
x = np.ones(5) 
print(x)
x = np.ones([2,2], dtype = int)
print(x)

六、NumPy 从已有的数组创建数组

  1. numpy.asarray 类似 numpy.array,直接创建数组,但所需参数只有三个;
  2. numpy.frombuffer 用于实现动态数组。numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。(注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b);
  3. numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。

#frombufferer举例
import numpy as np 
 
s =  b'Hello World' 
a = np.frombuffer(s, dtype =  'S1')  
print (a)


#fromiter举例
list=range(5)
it=iter(list) 
x=np.fromiter(it, dtype=float)
print(x)

七、NumPy 从数值范围创建数组 

八、NumPy 切片和索引

import numpy as np
 
a = np.arange(10)
s = slice(2,7,2)   # slice函数:从索引 2 开始到索引 7 停止,间隔为2
print (a[s])

#[]如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。
#如果为 [2:],表示从该索引开始以后的所有项都将被提取。
#如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
a = np.arange(10)  
b = a[2:7:2]   #冒号分割:从索引 2 开始到索引 7 停止,间隔为 2
print(b)

#切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。
#如果在行位置使用省略号,它将返回包含行中元素的 ndarray。
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print (a[...,1])   # 第2列元素
print (a[1,...])   # 第2行元素
print (a[...,1:])  # 第2列及剩下的所有元素

九、NumPy 高级索引

1.整数数组索引;

import numpy as np 

x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
y = x[[0,1,2],  [0,1,0]]  
print (y)

# 输出结果为:[1  4  5]

 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print ('我们的数组是:' )
print (x)
print ('\n')
rows = np.array([[0,0],[3,3]]) 
cols = np.array([[0,2],[0,2]]) 
y = x[rows,cols]  
print  ('这个数组的四个角元素是:')
print (y)

'''输出结果为:我们的数组是:
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]


这个数组的四个角元素是:
[[ 0  2]
 [ 9 11]]'''

2.布尔索引;

我们可以通过一个布尔数组来索引目标数组。布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

import numpy as np 
 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print ('我们的数组是:')
print (x)
print ('\n')
# 现在我们会打印出大于 5 的元素  
print  ('大于 5 的元素是:')
print (x[x >  5])


'''输出结果是:我们的数组是:
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]


大于 5 的元素是:
[ 6  7  8  9 10 11]'''

3.花式索引;

花式索引指的是利用整数数组进行索引。花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素,如果目标是二维数组,那么就是对应下标的行。花式索引跟切片不一样,它总是将数据复制到新数组中。

import numpy as np 
 
x=np.arange(32).reshape((8,4))
print (x[[-4,-2,-1,-7]])

'''输出结果是:[[16 17 18 19]
 [24 25 26 27]
 [28 29 30 31]
 [ 4  5  6  7]]'''


十、NumPy 广播(Broadcast)

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。

广播的规则:

  • 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
  • 输出数组的形状是输入数组形状的各个维度上的最大值。
  • 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
  • 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。

简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:

  • 数组拥有相同形状。
  • 当前维度的值相等。
  • 当前维度的值有一个是 1。

若条件不满足,抛出 "ValueError: frames are not aligned" 异常。

十一、NumPy 迭代数组

NumPy 迭代器对象 numpy.nditer 提供了一种一个或者多个数组元素的方式,迭代器最基本的任务是可以完成对数组元素的访问。

import numpy as np
 
a = np.arange(6).reshape(2,3)
print ('原始数组是:')
print (a)
print ('\n')
print ('迭代输出元素:')
for x in np.nditer(a):
    print (x, end=", " )
print ('\n')

控制遍历顺序:

  • for x in np.nditer(a, order='F'):Fortran order,即是列序优先;
  • for x in np.nditer(a.T, order='C'):C order,即是行序优先;

修改数组中元素的值

nditer 对象有另一个可选参数 op_flags。 默认情况下,nditer 将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定 readwrite 或者 writeonly 的模式。

import numpy as np
 
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print ('原始数组是:')
print (a)
print ('\n')
for x in np.nditer(a, op_flags=['readwrite']): 
    x[...]=2*x 
print ('修改后的数组是:')
print (a)

文本分析1:Numpy基础知识 精通数组思维,掌握数组操作 一、一维数组 数组的性质 数组是同类的,即数组的所有元素必须具有相同的类型。 数组的创建 1.列表转换为数组 import numpy as np a = [1, 2, 3, 4] # 创建简单的列表 b = np.array(a) # 将列表转换为数组 2.创建零数组 np.zeros(5,dtype=float) 输出结果: array([0.,0.,0.,0.,0.]) 如果括号内省略dtype,则缺省是浮点型。 3.创建单位数组 np.ones(5,dtype=int32 阅读详情

相关推荐

C# WinForm和Sherlock进行对接

文章目录 前言 一、使用步骤 二、使用步骤 1.引入库 2.读入数据 总结 前言 本人公司最近在做一款瑕疵检测的视觉项目,项目中利用Sherlock从相机中取图和对图像进行视觉处理,然后将图像和数据传输到项目中。这过程中软件需要和Sherlock进行图像和数据的传递,这就需要WinForm和Sherlock进行对接,但我在网上查找了许久能用上的资料十分有限,所以我决定写下这篇文章,来做一次总结,同时也希望能帮助到同样在为此问题困扰的你。 一、使用步骤 废话不...

adminmmrt的博客 3221

NumPy速查

目录 1. ndarry属性 2. 创建数组 3. 从已有的数组创建数组 4. NumPy从数值范围创建数组 5. NumPy切片和索引 6. NumPy高级索引 7. 广播操作 8. 数组操作 9. NumPy数学运算 10. NumPy IO 11. NumPy Matplotlib 12. NumPy.array 13. ndarray与tensor的相互转换 ...

GaoJieVery6 773

ArcGIS基础:城市交通网络构建及设施服务分析(一):道路数据处理与拓扑操作

首先需要加载数据, 1:选择这个数据库:,右键导入,选择导入单个要素,弹出“要素类至要素类” 2:输出位置(导入的数据是CAD格式数据)。 3:输出要素类为道路。 4:字段只保留道路类型字段。 这个操作是分类合并各级道路数据。 1:通过属性选择各类道路数据。 2:比如此类都是“干道”。 3:编辑器下来,然后合并即可。 得到如图所示,需要用到三个字段。 上面这个操作是打断道路相交线。 1:选中所有数据。 2:找到高级编辑中的打断相交线。 3:确定即可。 下面进行拓扑检查,虽然我们已经进行合并和打断相交.

yuanYW7556的博客 2万+

Numpy入门教程:01. 数组的创建与属性

背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于 Python 的 MATLAB 的快速替代。 计算机中的图像表示为多维数字数组。NumPy 提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。 在编写机器学习算法时,需要对矩阵进行各种数值

老马的程序人生 1281

C#上位机与OneNET云平台数据交互实战——基于HTTP与JSON解析

本文详细介绍了使用C#开发上位机软件与OneNET物联网云平台进行数据交互的实战方法。通过构建HTTP请求、解析JSON数据,实现设备数据的实时获取、界面展示与本地存储,为工业监控与数据采集提供了一套完整高效的C#解决方案。

kkk56的博客 219

SSD盘符漂移导致OSD down场景模拟与恢复

运维团队反馈一个问题,现象是:某个OSD对应的cache分区发生了变化,比如原来cache使用的分区是/dev/sde,后来还是这块盘,但分区信息不知何故,变成了/dev/sdf(产品OSD设备并不是根据分区名称来map,而是根据partlabel),最终的现象是这个OSD down了,没法启动.接到这个现象的反馈后,记录一下这个问题在lab的复现方法。

Gavin Blog 939

np.array 与 np.asarray

输出: 可以看出随着x的变化,经过方法np.asarray(x)得到最新的x,但np.array得到的是变化前的x

weixin_44658009的博客 405

基于STM32的馆藏文物保存环境监测系统设计与实现

针对馆藏文物保存环境中温湿度、光照、有害气体等参数波动易导致文物损坏的问题,本文设计了一种基于STM32微控制器的馆藏文物保存环境监测系统。该系统以STM32L431RCT6为核心,集成高精度传感器实现多参数实时采集,通过有线与无线结合的通信方式构建监测网络,具备数据存储、异常预警、远程监控等功能。测试结果表明,系统温湿度测量精度分别达±0.2℃、±2%RH,光照与有害气体检测误差≤5%,可满足文物保存环境的高精度监测需求,为文物保护提供科学的数据支撑。

m0_74026776的博客 1543

python之numpy.power()数组元素求n次方

转自:https://blog.youkuaiyun.com/lql0716/article/details/52910812 numpy.power(x1, x2) 数组的元素分别求n次方。x2可以是数字,也可以是数组,但是x1和x2的列数要相同。 >>> x1 = range(6) >>> x1 [0, 1, 2, 3, 4, 5] >>> np...

hhsh49的博客 9809

EtherCAT应用层协议选型指南:CoE、SoE、EoE、FoE、AoE到底怎么选?看完这篇就懂了

本文深入解析EtherCAT应用层协议(CoE、SoE、EoE、FoE、AoE)的选型策略,从实时性、数据吞吐量和功能完整性三大核心指标出发,提供工业场景下的实战决策框架。通过技术特性对比、混合协议架构设计和常见故障规避指南,帮助工程师优化自动化设备通信性能。

weixin_28718793的博客 494

ROS局部路径规划器插件teb_local_planner流程梳理(上)

在我之前的文章《ROS导航包Navigation中的 Movebase节点路径规划相关流程梳理》中已经介绍过Move_base节点调用局部路径规划器插件的接口函数是computeVelocityCommands,接下来,我们就从这个函数入手梳理一下teb_local_planner功能包的工作流程。

慕羽★的博客 5165

Python学习笔记----NumPy教程

NumPy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含: 一个强大的N维数组对象 ndarray 广播功能函数 整合 C/C++/Fortran 代码的工具 线性代数、傅里叶变换、随机数生成等功能 NumPy 通常...

wait1ess的博客 557

华为OD机试双机位C卷-恢复数字序列 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 恢复数字序列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 恢复数字序列。

qq_45776114的博客 1203

Numpy基础知识

Numpy学习笔记 Numpy介绍 NumPy,是Numerical Python的简称,它是目前Python数值计算中最为重要的基础包。大多数计算包都提供了基于NumPy的科学函数功能,将NumPy的数组对象作为数据交换的通用语。 以下内容将会出现在NumPy中: 基本内容 ndarray,一种高效多维数组,提供了基于数组的便捷算术操作以及灵活的广播功能 对所有数据进行快速的矩阵计算,而无须编写循环程序 对硬盘中数组数据进行读写的工具,并对内存映射文件进行操作 线性代数、随机数

FORxinchendahai的博客 1392

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python-numpy基础知识

numpy基础知识学习,自学笔记。

qq_47541315的博客 5122

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python/Numpy之矩阵/数组/列表转换

Python/Numpy之矩阵与数组列表转换 numpy矩阵数组、列表相比较 对比“矩阵数组”与“列表”,“矩阵数组”一般指基于numpy的,由于numpy对其专门优化,因此速度很快,“列表”数python 内置的数据类型,通过嵌套也可以存储多维数据。 数组中对元素的数据类型有同一性要求,列表则相对宽松 numpy的矩阵matrix是数组array的分支,matrix的优势是对于矩阵操作相对简单a * b即矩阵乘法计算,对应数组则需np.dot(a,b),除此之外还有一系列的矩阵操作,如转置、共轭等。

Snfiltration 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NumPy 基础知识 :1~5

我宁愿使用通用语言进行数学运算,也不愿尝试使用数学语言进行通用编程。在过去的十年中,Python 已成为科学计算中最受欢迎的编程语言之一。其成功的原因很多,随着您着手本书,这些原因将逐渐变得明显。与许多其他数学语言(例如 MATLAB,R 和 Mathematica)不同,Python 是一种通用编程语言。因此,它为构建科学应用并将其进一步扩展到任何商业或学术领域提供了合适的框架。例如,考虑一个(某种)简单的应用,该应用要求您编写软件并预测博客文章的受欢迎程度。

龙哥盟 3050

Python 3.9 兼容的 NumPy 版本

了解与 Python3.8 和 Python 3.9 兼容的 NumPy 版本。

qq_61645895的博客 9488

NumPy的基础知识

1.NumPy 的全称是“ Numeric Python”,它是 Python 的第三方扩展包,主要用来计算、处理一维或多维数组2.在数组算术计算方面, NumPy 提供了大量的数学函数3.NumPy 的底层主要用 C语言编写,因此它能够高速地执行数值计算4.NumPy 还提供了多种数据结构,这些数据结构能够非常契合的应用在数组和矩阵的运算上。

m0_73723097的博客 1206

python3.x安装numpy成功,但是import出错

问题描述 windows错误安装方法: pip3 install numpy 这种情况下虽然安装成功,但是在import numpy时会出现如下错误。 import numpy ** On entry to DGEBAL parameter number 3 had an illegal value ** On entry to DGEHRD parameter number 2 had an illegal value ** On entry to DORGHR DORGQR param

漫长IT路 8651

(1)Numpy基础知识&PyTorch基础知识

在创建Jupyter笔记本之后,我们先来学习一下Numpy。Numpy是python中最常见的用于科学计算的基础包,有对数组进行快速操作的一系列方法,包括数学运算、逻辑运算、分片操作、排序、选择、输入输出、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等。 Numpy的核心是ndarray对象,它封装了相同数据类型的n维数组。 基本概念 Numpy的数组类为ndarray,通常也被称作数组。ndarray对象的属性有: ndarray.ndim: 数组轴的个数 ndarray.shape: 数.

qq_43637727的博客 819

NumPy:初学者的绝对基础知识

数组是NumPy库的核心数据结构。数组是一个值的网格,它包含有关原始数据的信息,如何定位元素以及如何解释元素。它具有一系列可以以各种方式进行索引的元素。这些元素都是相同类型的,称为数组的dtype。数组可以通过非负整数的元组、布尔值、另一个数组或整数进行索引。数组的rank是其维数的数量。数组的shape是一个由整数组成的元组,给出了数组沿每个维度的大小。我们可以通过使用Python列表来初始化NumPy数组,使用嵌套列表来表示二维或更高维数据。我们可以使用方括号访问数组中的元素。

数智笔记 1173

Python NumPy: -1 的作用

Python代码中经常会遇到 -1 这个数字,它主要有两个作用: 倒数第一 自动推断 1倒数第一 在list, tuple, array中表示倒数第一个。 栗子1: a01 = [3, 2] print("a01[:-1]:", a01[:-1]) # output: 3 print("a01[0:-1]:", a01[0:-1]) # output: 3 ..

weixin_40522801的博客 3998

python numpy array倒序_NumPy学习笔记—(1/3)

NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。011.理解 Python 中的数据类型想要有效的掌握数据驱动科...

weixin_39977934的博客 7582

python3下载numpy包-numpy · PyPI

Project descriptionIt provides:a powerful N-dimensional array objectsophisticated (broadcasting) functionstools for integrating C/C++ and Fortran codeuseful linear algebra, Fourier transform, and rand...

weixin_37988176的博客 2374
上一篇: Python
下一篇: Numpy(2/3):数组基本操作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值