Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

NumPy 数组重塑


重塑数组

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

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

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


从一维数组到二维数组的重塑

示例

将以下包含 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 个元素的一维数组转换为三维数组。

最外层维度将有 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 个元素的一维数组重塑成 2 行 4 列的二维数组,但我们不能将其重塑成 3 行 3 列的二维数组,因为那样需要 3x3 = 9 个元素。

示例

尝试将包含 8 个元素的一维数组转换为每个维度包含 3 个元素的二维数组(将引发错误)

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)
尝试一下 »

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


未知维度

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

这意味着你不需要在 reshape 方法中为其中一个维度指定确切的数字。

-1 作为值传递,NumPy 将为你计算这个数字。

示例

将包含 8 个元素的一维数组转换为包含 2x2 个元素的三维数组

import numpy as np

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

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

print(newarr)
尝试一下 »

**注意:**我们不能将 -1 传递给超过一个维度。


扁平化数组

扁平化数组意味着将多维数组转换为一维数组。

我们可以使用 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 的中级到高级部分。



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.