NumPy - 数组创建例程



创建 NumPy 数组

我们可以使用 Python NumPy 库提供的各种函数来创建 NumPy 数组。此软件包提供了一个多维数组对象以及各种其他必要的对象和例程,以实现高效的功能。以下是我们可以用来创建 NumPy 数组的函数:

  • 使用 numpy.array() 函数
  • 使用 numpy.zeros() 函数
  • 使用 numpy.ones() 函数
  • 使用 numpy.arange() 函数
  • 使用 numpy.linspace() 函数
  • 使用 numpy.random.rand() 函数
  • 使用 numpy.empty() 函数
  • 使用 numpy.full() 函数
与 Python 列表不同,NumPy 数组支持按元素运算,并且内存效率更高,这使得它们非常适合数学计算。

使用 numpy.array() 函数

我们可以使用numpy.array()函数通过将 Python 列表或元组作为参数传递给函数来创建一个数组。

此函数将输入数据(如列表、元组等)转换为 ndarray(NumPy 数组)。以下是语法:

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0, like=None)

示例:创建一维 NumPy 数组

在以下示例中,我们使用 numpy.array() 函数从整数列表创建一个一维 NumPy 数组:

import numpy as np

# Creating a 1D array from a list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)

print("1D Array:", my_array)

以下是获得的输出:

1D Array: [1 2 3 4 5]

示例:创建二维 NumPy 数组

在这里,我们使用 numpy.array() 函数从列表的列表创建一个二维 NumPy 数组:

import numpy as np

# Creating a 2D array from a list of lists
arr = np.array([[1, 2, 3], [4, 5, 6]])

print("2D Array:\n", arr)

这将产生以下结果:

2D Array:
 [[1 2 3]
 [4 5 6]]

使用 numpy.zeros() 函数

我们还可以使用numpy.zeros()函数通过将数组的所需形状指定为元组或整数来创建数组。

此函数创建一个填充零的 NumPy 数组。它接受数组的形状作为参数,以及可选的数据类型 (dtype)。默认情况下,数据类型为float64。以下是语法:

numpy.zeros(shape, dtype=float, order='C')

示例

在此示例中,我们使用 numpy.zeros() 函数创建一个包含 5 个元素的 NumPy 数组,所有元素都初始化为零:

import numpy as np

# Creating an array of zeros 
arr = np.zeros(5)
print(arr)

以下是上述代码的输出:

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

使用 numpy.ones() 函数

另一方面,numpy.ones() 函数创建一个所有元素都设置为 1 的数组。它接受三个主要参数:shapedtypeorder

  • shape参数(可以是整数或整数元组)定义数组的维度。
  • dtype参数指定数组元素所需的类型,如果未提供,则默认为“float64”。
  • order参数确定数组的内存布局,可以是行主序 (C 样式) 或列主序 (Fortran 样式),其中 'C' 为默认值。

以下是语法:

numpy.ones(shape, dtype=None, order='C')

示例:创建一维全 1 数组

在下面的示例中,我们使用 numpy.ones() 函数创建一个包含 3 个元素的一维 NumPy 数组,所有元素都初始化为 1:

import numpy as np

# Creating an array of ones 
arr = np.ones(3)
print(arr)

执行上述代码后,我们得到以下输出:

[1. 1. 1.]

示例:创建二维全 1 数组

在这里,我们使用 np.ones() 函数创建一个包含 2 行 3 列的二维 NumPy 数组,并填充 1:

import numpy as np

# Creating 2D array of ones 
array_2d = np.ones((4, 3))
print(array_2d)

产生的结果如下:

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

示例:创建 Fortran 顺序的全 1 数组

现在,我们使用 np.ones() 函数和 Fortran 样式(列主序)顺序创建一个包含 2 行 3 列的二维 NumPy 数组,并填充 1:

import numpy as np

# Creating Fortran-ordered array of ones 
array_F = np.ones((4, 3), order='F')
print(array_F)

我们得到如下所示的输出:

[[1. 1. 1.][1. 1. 1.][1. 1. 1.][1. 1. 1.]]

使用 numpy.arange() 函数

numpy.arange()函数通过根据指定的开始、停止和步长值生成数字序列来创建数组。它类似于 Python 的内置 range() 函数。

此函数在给定区间内创建均匀间隔的值数组。它允许指定开始、停止和步长大小,并返回一个 NumPy 数组。

  • start - 序列的起始值。如果未指定,则默认为 0。

  • stop - 序列的结束值。此值是独占的,这意味着它不包含在序列中。

  • step - 序列中每对连续值之间的步长或间隔。如果未指定,则默认为 1。

以下是语法:

numpy.arange([start,] stop[, step,] dtype=None, *, like=None)

示例

在以下示例中,我们首先从 0 到 9 创建一个 NumPy 数组“array1”。然后,我们使用 np.arange() 函数创建一个另一个数组“array2”,其值从 1 开始到(但不包括)10,步长为 2:

import numpy as np

# Providing just the stop value
array1 = np.arange(10)
print("array1:", array1)

# Providing start, stop and step value
array2 = np.arange(1, 10, 2)
print("array2:",array2)

以下是获得的输出:

array1: [0 1 2 3 4 5 6 7 8 9]
array2: [1 3 5 7 9]

使用 numpy.linspace() 函数

我们甚至可以使用 numpy.linspace() 函数通过指定开始、停止和我们想要的元素数量来创建数组。

此函数创建的数组包含在指定区间内均匀间隔的值。该函数采用开始、停止和元素数量的参数,并生成在开始和停止值之间(包括端点)均匀分布的值。以下是语法:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

numpy.linspace() 函数在您需要在两个端点之间进行绘图或数值计算的特定数量的点时特别有用。

示例

在下面的示例中,我们使用 numpy.linspace() 函数创建三个数组(array1、array2 和 array3),并使用指定的范围和配置。

“array1”创建了从 0 到 5(包括端点)的 10 个均匀间隔的值。“array2”包含 5 个从 1 到略小于 2 的值,不包括端点。“array3”创建了 5 个从 0 到 10 的值,并返回数组和连续值之间的步长大小:

import numpy as np

# Creating an array of 10 evenly spaced values from 0 to 5
array1 = np.linspace(0, 5, num=10)
print("array1:",array1)


# Creating an array with 5 values from 1 to 2, excluding the endpoint
array2 = np.linspace(1, 2, num=5, endpoint=False)
print("array2:",array2)

# Creating an array and returning the step value
array3, step = np.linspace(0, 10, num=5, retstep=True)
print("array3:",array3)
print("Step size:", step)

这将产生以下结果:

array1: [0.         0.55555556 1.11111111 1.66666667 2.22222222 2.77777778
 3.33333333 3.88888889 4.44444444 5.        ]
array2: [1.  1.2 1.4 1.6 1.8]
array3: [ 0.   2.5  5.   7.5 10. ]
Step size: 2.5

使用 random.rand() 函数

或者,我们可以使用 numpy.random.rand() 函数通过将数组的维度指定为参数来创建数组。

此函数用于创建指定形状的数组,该数组填充了从 [0, 1) 上的均匀分布中采样的随机值。

它接受数组维度的参数(如 numpy.random.rand(rows, columns)),并生成具有指定形状的数组,其中包含 0 到 1 之间的随机值。如果未提供参数,则返回单个随机浮点值。以下是语法:

numpy.random.rand(d0, d1, ..., dn)

示例

在以下示例中,我们使用 numpy.random.rand() 函数生成具有不同维度的随机浮点数数组:

import numpy as np

# Generating a single random float
random_float = np.random.rand()
print("random_float:",random_float)

# Generating a 1D array of random floats
array_1d = np.random.rand(5)
print("array_1d:",array_1d)

# Generating a 2D array of random floats
array_2d = np.random.rand(2, 3)
print("array_2d:",array_2d)

# Generating a 3D array of random floats
array_3d = np.random.rand(2, 3, 4)
print("array_3d:",array_3d)

以下是上述代码的输出:

random_float: 0.5030496450079744
array_1d: [0.19476581 0.54430648 0.64571106 0.27443774 0.71874319]
array_2d: [[0.91141582 0.58847504 0.37284854]
 [0.0715398  0.21305363 0.766954  ]]
array_3d: [[[0.7295106  0.1582053  0.91376381 0.14099229]
  [0.6876814  0.19351871 0.18056163 0.61370308]
  [0.42382443 0.6665121  0.42322218 0.11707395]]

 [[0.60883975 0.01724199 0.95753734 0.17805716]
  [0.47770594 0.55840874 0.7375783  0.50512301]
  [0.73730351 0.85900855 0.16472072 0.2338285 ]]]

使用 numpy.empty() 函数

我们可以使用 numpy.empty() 函数通过将数组的形状指定为参数来创建 NumPy 数组。

此函数初始化数组而不初始化其元素;数组的内容是任意的,并且可能会有所不同。当您需要特定大小和数据类型的数组但打算稍后用数据填充它时,此功能很有用。以下是语法:

numpy.empty(shape, dtype=float, order='C')
与分别将数组元素初始化为零和一的 numpy.zeros() 函数和 numpy.ones() 函数不同,numpy.empty() 函数不会初始化元素。相反,它分配数组所需的内存,而不设置任何值。

示例

在此示例中,我们使用 numpy.empty() 函数创建一个包含 2 行 3 列的二维数组 (empty_array):

import numpy as np

empty_array = np.empty((2, 3))
print(empty_array)

获得的输出如下所示:

[[1.13750619e-313 0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000 0.00000000e+000]]

与 numpy.zeros() 不同,此函数使用未初始化的值初始化数组,这些值可能是内存中留下的任何随机数据,使其适用于不需要立即初始化的情况。

使用 numpy.full() 函数

使用 numpy.full() 函数,我们可以创建一个具有所需形状的数组,并将其中所有元素设置为特定值。以下是语法:

numpy.full(shape, fill_value, dtype=None, order='C')

示例

在下面的示例中,我们使用 numpy.full() 函数创建一个 2x3 的二维数组,并将其完全填充为值 5 。

import numpy as np

array1 = np.full((2, 3), 5)
print(array1)

执行上述代码后,我们得到以下输出:

[[5 5 5]
 [5 5 5]]
广告

© . All rights reserved.