1407 字
7 分钟
页面浏览--访问次数--
数据分析|ndarray的特性与属性

3.1 ndarray 的核心特性#

NumPy 数组(ndarray)是 NumPy 库的核心数据结构,它是一种高效的多维同构数组。ndarray 具有以下三个核心特性:

  • 多维性:支持 0 维(标量)、1 维(向量)、2 维(矩阵)及更高维数组
  • 同质性:所有元素类型必须一致(通过 dtype 指定)
  • 高效性:基于连续内存块存储,支持向量化运算

3.1.1 多维性#

ndarray 可以表示从 0 维到高维的多种数据结构。通过 ndim 属性可以查看数组的维度数量(number of dimensions)。

0 维数组(标量):

import numpy as np
arr = np.array(5) # 创建0维ndarray数组
print(arr)
print('arr的维度是:', arr.ndim)

输出:

5
arr的维度是: 0

1 维数组(向量):

arr = np.array([1, 2, 3]) # 创建1维ndarray数组
print(arr)
print('arr的维度是:', arr.ndim)

输出:

[1 2 3]
arr的维度是: 1

2 维数组(矩阵):

arr = np.array([[1, 2, 3], [4, 5, 6]]) # 创建2维ndarray数组
print(arr)
print('arr的维度是:', arr.ndim)

输出:

[[1 2 3]
[4 5 6]]
arr的维度是: 2

3.1.2 同质性#

ndarray 要求所有元素类型必须一致。当传入不同类型的元素时,NumPy 会自动进行类型转换,将所有元素统一为同一种类型。

整型与字符串混合:

arr = np.array([1, 'hello']) # 不同类型的元素会被强制转换为同一类型
print(arr)

输出:

['1' 'hello']

整型 1 被自动转换为字符串 '1',数组整体变为字符串类型。

整型与浮点型混合:

arr = np.array([1, 2.5]) # 不同类型的元素会被强制转换为同一类型
print(arr)

输出:

[1. 2.5]

整型 1 被自动转换为浮点型 1.0,数组整体变为浮点类型。


3.2 ndarray 的常用属性#

ndarray 提供了丰富的属性来描述数组的特征。以下是最常用的属性及其说明:

属性名称通俗解释使用示例
shape数组的形状:行数和列数(或更高维度的尺寸)arr.shape
ndim维度数量:数组是几维的(1维、2维、3维等)arr.ndim
size总元素个数:数组中所有元素的总数arr.size
dtype元素类型:数组中元素的类型(整数、浮点数等)arr.dtype
T转置:行变列,列变行arr.T
itemsize单个元素占用的内存字节数arr.itemsize
nbytes数组总内存占用量:size * itemsizearr.nbytes
flags内存存储方式:是否连续存储(高级优化)arr.flags

注意: 属性和方法的区分方式是看是否带括号——不带括号的是属性(如 arr.ndim),带括号的是方法。

下面通过不同维度的数组来演示这些属性的使用。

0 维数组的属性:

arr = np.array(1)
print(arr)
print('数组的形状:', arr.shape)
print('数组的维度:', arr.ndim)
print('元素的个数:', arr.size)
print('数组的类型:', arr.dtype)
print('元素的转置:', arr.T)

输出:

1
数组的形状: ()
数组的维度: 0
元素的个数: 1
数组的类型: int64
元素的转置: 1

1 维数组的属性:

arr = np.array([1, 2.5, 3])
print(arr)
print('数组的形状:', arr.shape)
print('数组的维度:', arr.ndim)
print('元素的个数:', arr.size)
print('数组的类型:', arr.dtype)
print('元素的转置:', arr.T)

输出:

[1. 2.5 3. ]
数组的形状: (3,)
数组的维度: 1
元素的个数: 3
数组的类型: float64
元素的转置: [1. 2.5 3. ]

注意 1 维数组的形状为 (3,),表示只有一个维度,长度为 3。1 维数组的转置等于其自身。

2 维数组的属性:

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
print('数组的形状:', arr.shape)
print('数组的维度:', arr.ndim)
print('元素的个数:', arr.size)
print('数组的类型:', arr.dtype)
print('元素的转置:', arr.T)

输出:

[[1 2 3]
[4 5 6]]
数组的形状: (2, 3)
数组的维度: 2
元素的个数: 6
数组的类型: int64
元素的转置: [[1 4]
[2 5]
[3 6]]

2 维数组的转置操作会将行变为列、列变为行。原数组形状为 (2, 3),转置后形状变为 (3, 2)。


3.3 矩阵的基本概念#

在深入学习 ndarray 之前,有必要了解一些矩阵的基本概念。矩阵是线性代数中的基础数据结构,也是 NumPy 中 2 维数组的数学原型。

3.3.1 数组与矩阵的对比#

在 NumPy 中,不同维度的数组对应不同的数学对象:

名称维度示例备注
标量0 维5, 3.14单个数字,无行列
向量1 维[1, 2, 3]只有行或列(一维数组)
矩阵2 维[[1, 2], [3, 4]]严格的行列结构(二维表)
张量≥3 维[[[1, 2], [3, 4]]]高阶数组(如 RGB 图像)

3.3.2 矩阵的定义#

矩阵是一个由行(row)和列(column)排列成的矩形数组。例如:

A=[123456]A=\begin{bmatrix} 1&2&3\\ 4&5&6\end{bmatrix}

  • 形状(shape):这个矩阵有 2 行 3 列,记作 2×3 矩阵
  • 元素(entry):矩阵中的每个数字称为元素

3.3.3 特殊矩阵#

在线性代数和 NumPy 中,有几类常见的特殊矩阵:

矩阵类型定义例子
零矩阵所有元素为 0[0000]\begin{bmatrix} 0&0\\ 0&0\end{bmatrix}
单位矩阵对角线上为 1,其余为 0[1001]\begin{bmatrix} 1&0\\ 0&1\end{bmatrix}
对角矩阵只有对角线有非零值[2003]\begin{bmatrix} 2&0\\ 0&3\end{bmatrix}
对称矩阵A=ATA=A^{T}[1223]\begin{bmatrix} 1&2\\ 2&3\end{bmatrix}

这些特殊矩阵在 NumPy 中都有对应的创建方法,我们将在下一节中详细学习。


3.4 本节小结#

本节完成了以下内容:

  • 介绍了 ndarray 的核心特性:多维性、同质性和高效性
  • 讲解了 ndarray 的常用属性:shape、ndim、size、dtype、T、itemsize、nbytes、flags
  • 了解了矩阵的基本概念,包括标量、向量、矩阵、张量的区别,以及特殊矩阵的类型

下一节我们将学习 ndarray 的各种创建方法。


数据分析

连载中

第 3 篇,共 21 篇本文属于系列

数据分析|ndarray的特性与属性
https://luq-blog.xyz/posts/2026-07-01-data-notes-03-ndarray-features/
作者
Luquiescene
发布于
2026-07-01
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

评论

正在加载评论...

最后更新于 ,距今已过 95 天

部分内容可能已过时