Numpy改变数组维度的几种方法小结

一颗松果
一颗松果
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍Numpy中改变数组维度的五种常用方法。通过reshape、ravel、flatten、直接设置shape属性以及transpose和resize函数,实现多维数组的重塑、展平与转置。重点解析ravel与flatten在内存占用上的差异,以及reshape与resize在是否直接修改原数组方面的不同行为,帮助开发者根据实际需求选择合适的方法。

本节内容源自《Python数据分析基础教程:Numpy 学习指南(第2版)》。

在Numpy中,改变数组维度的操作主要包含以下几种方式:

reshape()
ravel()
flatten()

接下来将逐一介绍如何利用元组来设定数组维度。

transpose()
resize()

首先,我们需要构建一个多维数组作为示例基础。

具体实现代码如下:

from numpy import * 
a = arange(24)

执行后输出结果如下:

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

第一种方法是使用reshape函数。

b = a.reshape(2,3,4)
print(b)

该函数可将现有数组重塑为指定的形状,例如生成一个2*3*4维的数组:

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

为了便于理解,可以将这个三维数组想象为一栋拥有2层的建筑,每一层包含3排、每排4间房间的结构。

第二种方法是使用ravel函数,它能够将多维数组展平为一维数组。

c = b.ravel()
print(c)

执行后的结果为一个一维数组:

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

第三种方法是使用flatten函数,其功能同样是将多维数组展平,与ravel函数效果一致。但两者关键区别在于内存管理:flatten函数会分配新的内存空间来保存展平后的结果,而ravel函数仅返回原数组的一个视图(view),不复制数据。

c = b.flatten()
print(c)

执行后的结果同样为一个一维数组:

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

第四种方法是通过元组直接设置数组维度。

这种方法允许用户直接传入一个正整数元组来定义数组的新形状。

b.shape = (6,4)
print(b)

需要注意的是,此操作会直接修改原数组对象。例如,数组b的形状被直接更改为6*4的多维数组:

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

第五种方法是使用transpose函数,用于对矩阵进行转置操作。

d = b.transpose()
print(d)

执行转置后,得到形状为4*6的多维数组:

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

第六种方法是使用resize函数,其功能与reshape类似,但resize会直接修改所操作的数组对象。

b.resize((2,12))
print(b)

执行后,数组变为形状为2*12的两维数组:

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

此外,必须注意resize函数的返回值特性,它无法通过赋值语句直接获取结果,如下例所示:

e = b.resize((2,12))
print(e)

此时变量的结果为:

None

以上即为Numpy中改变数组维度的几种核心方法总结,希望能为读者提供有效的参考。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。