Python学习历程无忧·日更文艺大观园

NumPy数组维度

2022-12-06  本文已影响0人  心际花园

【介绍】

数组维数

现在我们已经创建了一维和二维数组,

让我们深入了解 NumPy 的主要优势之一:处理任何维度数据的能力。

由于以更高维度保存的数据可能更难处理,我们还将学习如何检查和更新数组形状。

让我们潜入!

3D 数组

就像我们可以通过向 NumPy 提供列表列表来创建 2D 数组一样,我们可以通过创建列表的列表的列表来创建 3D 数组。

或者,我们可以创建一个 2D 数组的数组。

为此,我们将 2D 数组列表传递给np.array()

我们可以将 3D 阵列可视化为一堆形状相同的 2D 数组堆叠在一起。

array_1_2D = np.array([[1,2], [5,7]])

array_2_2D = np.array([[8,9], [5,7]])

array_3_2D = np.array([[1,2], [5,7]])

array_3D = np.array([array_1_2D, array_2_2D, array_3_2D])

4D数组

四维数组可能更难可视化,因为我们没有第四维。将 4D 阵列视为充满 3D 阵列的 2D 阵列。

array_4D = np.array([array_A_3D, array_B_3D,array_C_3D,array_D_3D,array_E_3D,array_F_3D,array_G_3D, array_H_3D,array_I_3D])

向量数组

程序员和 NumPy 文档有时将数组称为向量(vectors)、矩阵(matrices)或张量(tensors)。

这些是数学术语而不是 NumPy 术语;它们都描述了数组的类型。

它们之间的区别在于数组具有的维数。

向量是指具有一维的数组

NumPy 中的行和列(或水平和垂直)向量之间没有区别,因为没有为 1D 数组指定第二个轴。

要创建显式水平或垂直的数组,它必须是 2D 数组,以便 NumPy 了解它所在的轴,如右侧的数组。

由于这些数组是二维的而不是一维的,因此将它们称为向量是不正确的。

矩阵和张量数组

相反,在数学中,二维数组称为矩阵

具有三个或更多维度的数组称为张量

变形

我们已准备好学习我们的第一个数组属性和数组方法!

数组属性是数组实例的属性,例如数组的形状 .shape

.flatten().reshape()这样的数组方法直接在数组对象本身上调用,而不是像我们对np.array()等NumPy函数那样将数组作为参数传递。

查找数组的形状

.shape描述数组的形状,并返回每个维度长度的元组

array.shape 表示具有3行5列的二维数组。


array = np.zeros((3,5))

print(array)

array.shape

行和列

在 NumPy 中,引用行和列只能让我们走到这一步,因为许多数组都有二维以上的维度。

我们可以引用第一个维度,而不是引用

我们可以参考第二个维度,而不是引用

但是,在处理 2D 数组时,通常回退到行和列术语。

展平数组

操作一维数据通常比操作大型多维数组更容易。

np.flatten() 可以在这里提供帮助:它接受所有数组元素并将它们放在 1D 数组中的一个维度中。


array = np.array([[1,2], [5,7], [6,6]])

array.flatten()

重塑数组

.reshape()方法允许我们重新定义数组的形状,而无需更改构成数组的元素。

在这个例子中,我们把一个3行2列的二维数组变成一个2行3列的二维数组。

传递给 .reshape()的形状元组必须与数组中的元素数兼容。

这个数组不能重新塑造成 (3, 3) 的形状,因为3乘以3就是9,而数组只有6个元素。

array = np.array([[1,2], [5,7], [6.6]])
array.reshape((2,3))

让我们开始练习

好了,是时候自己玩弄数组维度了!

【一句话总结】

本节讲如何创建3D数组、4D数组,以及向量、矩阵、张量的概念,以及发现数组的形状和变形

概念

向量数组,就是一维数组。

矩阵数组,就是二维数组。

张量数据,就是三维及以上数组。

数组属性,就是数组实例的属性。

数组方法,直接在数组对象本身上调用的方法。

事实

2D数组,使用术语行列。

3D及以上数组,使用第一个维度,第二个维度。

程序

创建3D数组 np.array([array_1_2D, array_2_2D])

创建4D数组 np.array([array_1_3D, array_2_3D])

查询数组的形状 array.shape

展平为一维数组 array.flatten()

重塑数组形状 array.reshape((num1, num2))

上一篇下一篇

猜你喜欢

热点阅读