NumPy 教程

浏览4624
更新时间2025-08-12

重塑数组

重塑意味着改变数组的形状。

数组的形状是每个维度中元素的数量。

通过重塑,我们可以添加或删除维度,或更改每个维度中的元素数量。

从一维重塑为二维

实例

将以下包含 12 个元素的一维数组转换为二维数组。

最外面的维度将有 4 个数组,每个数组有 3 个元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

从一维重塑为三维

实例

将以下包含 12 个元素的一维数组转换为 3 维数组。

最外面的维度将有 2 个数组,其中包含 3 个数组,每个数组有 2 个元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)

我们可以重塑成任何形状吗?

是的,只要两个形状中重塑所需的元素相同即可。

我们可以将 8 个元素的 1D 数组重塑为 4 个元素的 2 行 2D 数组,但我们无法将其重塑为 3 个元素的 3 行 2D 数组,因为这需要 3x3 = 9 个元素。

实例

尝试将具有 8 个元素的 1D 数组转换为每个维度具有 3 个元素的 2D 数组(会引发错误):

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

返回副本还是视图?

实例

检查返回的数组是副本还是视图:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

上面的示例返回原始数组,因此它是一个视图。

未知维度

你可以有一个“未知”的维度。

这意味着您不必在重塑方法中为其中一个维度指定准确的数字。

将 -1 作为值传递,NumPy 将为您计算此数字。

实例

将具有 8 个元素的 1D 数组转换为具有 2x2 元素的 3D 数组:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

注意:我们不能将 -1 传递给多个维度。

展平数组

展平数组意味着将多维数组转换为 1D 数组。

我们可以使用 reshape(-1) 来做到这一点。

实例

将数组转换为一维数组:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

注意:NumPy 中有很多用于更改数组形状的函数,如 flattenravel,以及用于重新排列元素的 rot90flipfliplrflipud 等。这些属于 numpy 的中级到高级部分。

相关视频

更多

免费

php8,我来也
初级php8,我来也

321845次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382466次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282857次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13418次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时 | 62.5万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时 | 39.7万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时 | 73.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号