Numpy基础入门(2) ndarray介绍

Numpy基础入门(2) ndarray介绍本节介绍了 Numpy 最核心的 ndarray 以及特性和属性

大家好,欢迎来到IT知识分享网。

目录

1.ndarray介绍

2.ndarray特点

1.只能存储相同数据类型的元素

2.每个维度的元素数量是固定的

3.基于C语言实现,经过大量优化的矩阵运算,实现高性能数据处理

3.属性


1.ndarray介绍

ndarry:N-dimensional array的缩写,属于一个Python的类

        官方文档解释(翻译):

由多个具有相同类型和尺寸的元素组成的多维容器(通常具有固定尺寸)

2.ndarray特点

1.只能存储相同数据类型的元素

Numpy的ndarray没有Python列表那么高的灵活性,为了保持高性能,牺牲了部分灵活性

2.每个维度的元素数量是固定的

  • 对于一维数组,只有一个维度,所以元素数量必定是相同
  • 对于二维数组,每行的元素数量应该是相同的,每列的元素数量应该是相同的
  • 以此类推,每个维度元素数量是固定的不变的                    

 示例:

import numpy as np # 一维数组 first = np.array([1,2,3,4,5]) # 二维数组 second = np.array([[1,2,3,4,5],[6,7,8,9,0]])

输出· :

>>>array([1,2,3,4,5]) # 一维数组

3.基于C语言实现,经过大量优化的矩阵运算,实现高性能数据处理

Python语言以简洁闻名,而C语言则比Python有着更强的运算能力,因而Numpy牺牲部分灵活性来实现高性能

3.属性   

常用属性值和说明
T 数组转置,适合于二维及以上的多维数组
data 用于表示数组数据在Python缓冲区对象的位置
dtype 元素类型
flags 数据在内存中的保存方式的信息
flat 将ndarray转换为一维数组的迭代器
imag 虚部表示
real 实部表示
size 元素数量
itemsize 每个元素的内存容量,以byte为单位
nbytes 数组总共占据的内存大小,单位为byte
ndim 维度数
shape 数组形式,表示为元组
strides 在单个维度上,相邻元素间的距离,单位为byte,
ctypes 用于操作ctypes的迭代器
base 数组的基类对象,类似于类的父类,表示引用的内存数据位置

        一维数组:

>>> import numpy as np

>>> test.nbytes  # itemsize * size
32

        二维数组:

>>> test_2 = test.reshape([2,4])  # 根据test创建一个二维数组

*shape:表示数组形状。对于Numpy来说,从一维最低维度列开始,每高一个维度,将新增的维度加在shape元组的前面,即加在第一个。

  • 一维数组表示为(a ,), 表示为列,为最低维度;
  • 二维数组是(b, a), 在一维数组上新增了一维,加在了之前;
  • 三维则是(c, b, a), 新的维度加在了行之前:
  • 四维甚至于更高维度可以以此类推。

shape一般来说用于对照axis操作,axis=0是对最高维进行操作,后续会进行讲解~

坐标轴与维度操作

*stride:步长,行主序和列主序一般来说每个维度步长是不相同的;而对于不同步长来说,即使数组相同运行速度也不相同

运行比较代码

import time import numpy as np x = np.ones([, 1]) y = np.ones([, 1])[::50] c = time.time() x.sum() # 计算总和 print(time.time() - c) c = time.time() y.sum() # 计算总和 print(time.time() - c) # 消耗时间

可见stride较小的x运行较快,快了约30倍;但是在较小的实现中可不用考虑此差异

*行主序与列主序

        行主序:指数组以一行为单位存储于内存中

a[0][0]  a[0][1]  a[0][2] ; a[1][0]  a[1][1]  a[1][2] ; a[2][0]  a[2][1]  a[2][2]

        列主序:指数组以一列为单位存储于内存中

a[0][0]  a[1][0]  a[2][0] ; a[0][1]  a[1][1]  a[2][1] ; a[0][2]  a[1][2]  a[2][2]

*最详细数据请参考Numpy官方社区介绍

Numpy官方文档地址 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/113186.html

(0)
上一篇 2025-12-16 10:26
下一篇 2025-12-16 10:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信