NumPy N-维数组创建

NumPy 不仅限于一维数组,它还可以拥有多维数组,也称为N维数组或ndarray。

N维数组是指数组组织的维度数。

数组可以具有任意数量的维度,每个维度可以具有任意数量的元素。

例如,二维数组表示一个带行和列的表,而三维数组表示一个具有宽度、高度和深度的立方体。

NumPy 中有多种创建N维数组的技术,我们将在下面逐一探讨。


从列表的列表创建N维数组

要从Python列表创建N维NumPy数组,我们可以使用np.array()函数并将列表作为参数传递。

创建二维NumPy数组

让我们使用列表创建一个具有2行和4列的二维NumPy数组。

import numpy as np

# create a 2D array with 2 rows and 4 columns
array1 = np.array([[1, 2, 3, 4],
                  [5, 6, 7, 8]])

print(array1)

输出

[[1 2 3 4]
 [5 6 7 8]]

在上面的示例中,我们首先创建了一个二维列表(列表的列表)[[1, 2, 3, 4], [5, 6, 7, 8]],它包含2行和4列。然后,我们将该列表传递给np.array()函数来创建二维数组。

创建三维NumPy数组

假设我们要创建一个三维NumPy数组,包含两个“切片”,每个切片有3行和4列。

以下是我们创建所需三维数组的方法:

import numpy as np

# create a 3D array with 2 "slices", each of 3 rows and 4 columns
array1 = np.array([[[1, 2, 3, 4],
                [5, 6, 7, 8], 
                [9, 10, 11, 12]],
                     
                [[13, 14, 15, 16], 
                 [17, 18, 19, 20], 
                 [21, 22, 23, 24]]])

print(array1)

输出

[[[ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12]]

 [[13 14 15 16]
  [17 18 19 20]
  [21 22 23 24]]]

在这里,我们创建了一个三维列表(列表的列表的列表)并将其传递给np.array()函数。这将创建一个名为array1的三维数组。

在三维列表中:

  • 最外层的列表包含两个元素,它们是代表数组两个“切片”的列表。每个切片都是一个二维数组,具有3行和4列。
  • 最内层的列表代表二维数组的单个行。

注意:在N维数组的上下文中,切片就像是我们可以通过选择特定范围的行、列来提取的数组的子集。


从头开始创建N维数组

我们已经了解了如何从Python列表创建N维NumPy数组。现在我们将了解如何从头开始创建它们。

要从头开始创建多维数组,我们使用诸如以下函数:

  • np.zeros()
  • np.arange()
  • np.random.rand()

使用np.zeros()创建N维数组

np.zeros()函数允许我们创建由所有零填充的N维数组。例如:

import numpy as np

# create 2D array with 2 rows and 3 columns filled with zeros array1 = np.zeros((2, 3))
print("2-D Array: ") print(array1)
# create 3D array with dimensions 2x3x4 filled with zeros array2 = np.zeros((2, 3, 4))
print("\n3-D Array: ") print(array2)

输出

2-D Array: 
[[0. 0. 0.]
 [0. 0. 0.]]

3-D Array: 
[[[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]]

在上面的示例中,我们分别使用了np.zeros()函数创建了一个二维数组和一个三维数组,它们都用零填充。

  • np.zeros((2, 3)) - 返回一个用零填充的二维数组,具有2行和3
  • np.zeros((2, 3, 4)) - 返回一个用零填充的三维数组,包含2个切片,每个切片具有3行和4列。

注意:类似地,我们可以使用np.ones()创建填充值为1的数组。


使用指定值创建N维数组

在NumPy中,我们可以使用np.full()函数来创建具有指定值多维数组。

例如,要创建一个值为5的二维数组,我们可以这样做:

import numpy as np

# Create a 2-D array with elements initialized to 5 
numpy_array = np.full((2, 2), 5)

print("Array:", numpy_array)

输出

[[5 5]
[5 5]]

在这里,我们使用了np.full()函数创建了一个二维数组,其中所有元素都初始化为5


使用np.random.rand()创建数组

np.random.rand()函数用于创建随机数数组。

让我们看一个创建包含5个随机数的数组的示例:

import numpy as np

# create a 2D array of 2 rows and 2 columns of random numbers array1 = np.random.rand(2, 2)
print("2-D Array: ") print(array1)
# create a 3D array of shape (2, 2, 2) of random numbers array2 = np.random.rand(2, 2, 2)
print("\n3-D Array: ") print(array2)

输出

2-D Array: 
[[0.13198621 0.54730421]
 [0.36570987 0.16233836]]

3-D Array: 
[[[0.15666007 0.4580507 ]
  [0.84769856 0.76699589]]

 [[0.45395202 0.39944328]
  [0.62999479 0.39629496]]]

这里,

  • np.random.rand(2, 2) - 创建一个具有2行和2列的随机数二维数组。
  • np.random.rand(2, 2, 2) - 创建一个三维数组,包含2个切片,每个切片具有2行和2列的随机数。

创建空N维NumPy数组

要创建空N维NumPy数组,我们使用np.empty()函数。例如:

import numpy as np

# create an empty 2D array with 2 rows and 2 columns array1 = np.empty((2, 2))
print("2-D Array: ") print(array1)
# create an empty 3D array of shape (2, 2, 2) array2 = np.empty((2, 2, 2))
print("\n3-D Array: ") print(array2)

输出

2-D Array: 
[[8.86495615e-317 0.00000000e+000]
 [2.21149159e-316 1.76125651e-312]]

3-D Array: 
[[[1.0749539e-316 0.0000000e+000]
  [0.0000000e+000 0.0000000e+000]]

 [[0.0000000e+000 0.0000000e+000]
  [0.0000000e+000 0.0000000e+000]]]

在上面的示例中,我们分别使用了np.empty()函数创建了一个空的二维数组和一个三维数组。

如果我们查看代码的输出,我们可以看到空数组实际上并不是空的,它里面包含一些值。

这是因为虽然我们创建了一个空数组,但NumPy会尝试向其中添加一些值。数组中存储的值是任意的,没有重要意义。

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战