NumPy数组属性

本章节我们将来了解 NumPy 数组的一些基本属性。

NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。

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

很多时候可以声明 axis。axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

NumPy 的数组中比较重要 ndarray 对象属性有:

属性 说明
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n行m列
ndarray.size 数组元素的总个数,相当于.shape中的 n * m的值
ndarray.dtype ndarray对象的元素类型
ndarray.itemsize ndarray对象中每个元素的大小,以字节为单位
ndarray.flags ndarray对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

ndarray.ndim

ndarray.ndim用于返回数组的维数,等于秩。

import numpy as npa = np.arange(24)
print(a)
print("-----------")
print(a.ndim)     # a  现只有一个维度
print("-----------")
#现在调整其大小
b = a.reshape(2,4,3)   # b现在拥有三个维度
print(b)
print("----------")
print(b.ndim)

输出结果:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
-----------
1
-----------
[[[ 0  1  2][ 3  4  5][ 6  7  8][ 9 10 11]][[12 13 14][15 16 17][18 19 20][21 22 23]]]
----------
3

ndarray.shape

ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。比如,一个二维数组,其维度表示"行数"和"列数"。

ndarray.shape 也可以用于调整数组大小。

import numpy as npa = np.array([[1,2,3],[4,5,6]])
print(a.shape)

输出结果为:

(2, 3)

调整数组大小

import numpy as npa = np.array([[1,2,3],[4,5,6]])
a.shape = (2,3)
print(a)

输出结果:

[[1 2 3][4 5 6]]

NumPy也提供了reshape函数来调整数组大小

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

输出结果为:

[[1 2][3 4][5 6]]

ndarray.itemsize

ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。

例如,一个元素类型为 float64 的数组 itemsiz 属性值为 8(float64 占用 64 个 bits,每个字节长度为 8,所以 64/8,占用 8 个字节),又如,一个元素类型为 complex32 的数组 item 属性为 4(32/8)。

import numpy as np# 数组的 dtype 为 int8(一个字节)
x = np.array([1, 2, 3, 4, 5], dtype=np.int8)
print(x.itemsize)# 数组的 dtype 现在为 float64(八个字节)
y = np.array([1, 2, 3, 4, 5], dtype=np.float64)
print(y.itemsize)

输出结果为:

1
8

ndarray.flags

ndarray.flags 返回 ndarray 对象的内存信息,包含以下属性:

属性 描述
C_CONTIGUOUS © 数据是在一个单一的C风格的连续段中
F_CONTIGUOUS (F) 数据是在一个单一的Fortran风格的连续段中
OWNDATA (O) 数组拥有它所使用的内存或从另一个对象中借用它
WRITEABLE (W) 数据区域可以被写入,将该值设置为 False,则数据为只读
ALIGNED (A) 数据和所有元素都适当地对齐到硬件上
UPDATEIFCOPY (U) 这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新

实例:

import numpy as npx = np.array([1,2,3,4,5])
print(x.flags)

输出结果为:

  C_CONTIGUOUS : TrueF_CONTIGUOUS : TrueOWNDATA : TrueWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False

B02_NumPy数据属性(ndarray.ndim,ndarray.shape,ndarray.itemsize,ndarray.flags)相关推荐

  1. python中使用ndim和shape属性获取ndarray数据的维度、长度、形状等参数

    我们在描述一个多维数组的时候,经常会用到两个参数:维度(dimension)和形状(shape),以二维数组为例,我们可以用矩阵来形象地联想这两个参数,对于矩阵,显然我们最常见的矩阵是二维的,所以他的 ...

  2. python ndarray转换为array_python ndarray与pandas series相互转换,ndarray与dataframe相互转换...

    用python做科技计算时,经常需要类型转换,以下是常用类型转换 一.ndarray 转换为 series 1.如果ndarray是二维数组,如下 array([[1], [2], [3]]) 需要通 ...

  3. python(numpy,pandas1)——numpy(ndim,shape,size,zero, empty, arange, linspace)

    文章目录 前言 1. numpy属性ndim,shape,size 2. numpy数据生成zero empty arange linspace 补充:对np.array生成的数据的分析 前言 根据 ...

  4. python中ndim是什么_Numpy中ndim、shape、dtype、astype的用法详解

    本文介绍numpy数组中这四个方法的区别ndim.shape.dtype.astype. 1.ndim ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度. 2.shape shape ...

  5. Numpy:ndim、shape、dtype、astype用法介绍

    参考链接: Numpy中ndim.shape.dtype.astype的用法

  6. Numpy中ndim、shape、dtype、astype的用法

    本文介绍numpy数组中这四个方法的区别ndim.shape.dtype.astype. 1.ndim ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度. 2.shape shape ...

  7. python中ndim是什么_使用Python中的ndim和shape属性获取darray数据的维度、长度、形状和其他参数,python,ndarray,等...

    我们在描述一个多维数组的时候,经常会用到两个参数:维度(dimension)和形状(shape),以二维数组为例,我们可以用矩阵来形象地联想这两个参数,对于矩阵,显然我们最常见的矩阵是二维的,所以他的 ...

  8. python numpy是什么_Python库Numpy里ndarray.ndim 是什么意思?

    刚学习numpy,对此查找了一下,给出下面的解释,希望能帮到题主. 1.ndim中的dim是英文dimension维度的缩写.numpy文档中对ndim的属性见下图解释. 因此对于一个数组,其shap ...

  9. python中array是什么意思_Python库Numpy里ndarray.ndim 是什么意思?

    刚学习numpy,对此查找了一下,给出下面的解释,希望能帮到题主. 1.ndim中的dim是英文dimension维度的缩写.numpy文档中对ndim的属性见下图解释. 因此对于一个数组,其shap ...

最新文章

  1. 【深入Java虚拟机JVM 07】JVM如何判断对象已死
  2. 多线程 并发编程 看了这篇 终于了解了
  3. 【计算机系统设计】实践笔记(3)改进数据通路:jr指令分析与实现
  4. webassembly_WebAssembly的设计
  5. 算法(4)-leetcode-explore-learn-数据结构-数组2
  6. 昨天习题答案大剖析!再接再厉
  7. Vue项目启动报错 error:cannot find module xxx
  8. 母亲节:微信喊你给母亲充钱 华为帮你教爸妈用手机
  9. springboot使用thymeleaf模板引擎时出现org.xml.sax.SAXParseException的原因与解决办法
  10. PATB 1038. 统计同成绩学生(20)
  11. python源码保护之cython
  12. latex怎么打区间_涨出天际的安阳房价,这个月怎么样了?
  13. 迅雷精简版绿色优化版
  14. 『转载』完全用Linux工作 王垠
  15. windows无法完成格式化怎么办?
  16. 用户IP访问次数统计
  17. Appium移动自动化测试(三)--安装Android模拟器(建议直接连手机,跳过此步)
  18. calc()函数 css中用100%的宽度/高度,减去50px??
  19. 进程调度 优先级c语言,按优先级调度算法实现进程调度的程序
  20. 润迈德医疗开启招股:未有基石投资者参与,亏损金额翻倍增长

热门文章

  1. Python多任务(1.多进程的概念和用法 )
  2. hana::detail::variadic::at用法的测试程序
  3. boost::sequential_vertex_coloring用法的测试程序
  4. boost::make_biconnected_planar用法的测试程序
  5. boost::endian::endian_arithmetic的测试程序
  6. GDCM:解析XPATH文件的测试程序
  7. Boost:简单移动平均线的测试程序
  8. Boost:循环缓冲区总和的测试程序
  9. 基于Boost::beast模块的异步WebSocket客户端
  10. ITK:使用最小最大曲率流平滑RGB图像