阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


重塑和展平多维数组

本节介绍.flatten()ravel()

有两种常用的展平数组的方法:.flatten().ravel()

两者之间的主要区别在于,使用ravel()创建的新数组实际上是对父数组的引用(即“视图”)。这意味着对新数组的任何更改也将影响父数组。因为ravel不创建拷贝,所以它的内存效率很高。

如果从这个数组开始:

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

可以使用“flatten”将数组展平为1D阵列

>>> x.flatten()
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

使用“flatten”时,对新数组的更改不会更改父数组。

>>> a1 = x.flatten()
>>> a1[0] = 99
>>> print(x)  # Original array
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
>>> print(a1)  # New array
[99  2  3  4  5  6  7  8  9 10 11 12]

但是使用ravel时,对新数组所做的更改将影响父数组。 例如:

>>> a2 = x.ravel()
>>> a2[0] = 98
>>> print(x)  # Original array
[[98  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
>>> print(a2)  # New array
[98  2  3  4  5  6  7  8  9 10 11 12]

NumPy入门系列教程:

1 NumPy介绍

2 安装和导入NumPy

3 Python列表和NumPy数组有什么区别?

4 什么是array?

5 有关Array的详细信息

6 如何创建array

7 添加、删除和排序元素

8 数组形状和大小

9 重塑array

10 如何将一维array转换为二维array(如何向数组添加新轴)

11 NumPy索引和切片

12 如何从现有数据创建数组

13 数组基本操作

14 广播

15 更有用的数组操作

16 生成随机数

17 获得唯一元素和出现次数

18 变换和重塑矩阵

19 如何反转数组

  1. 重塑和展平多维数组