Numpy empty_like() 函数
Python 中的 Numpy empty_like() 函数用于创建一个与现有数组具有相同形状和类型但未初始化值的新数组。它有助于快速设置特定形状的数组,而无需预先赋值,这在不需要初始值的场景中非常有效。
numpy.empty_like() 函数不会初始化数组值,因此输出结果可能会有所不同,并包含内存中存在的任意值。
语法
以下是 Numpy empty_like() 函数的语法 -
numpy.empty_like(arr, dtype=None, order='K', subok=True, shape=None)
参数
以下是 Numpy empty_like() 函数的参数 -
- arr:数组,其形状和类型定义输出数组的形状和类型。
- dtype(可选):返回数组所需的数据类型。如果为 None,则使用 arr 的数据类型。
- subok(可选):如果为 True,则新创建的数组将使用 arr 的子类类型。
- shape(可选):覆盖结果的形状。
- order(可选):指定数组的内存布局。如果对象不是数组,则新创建的数组将按 C 语言顺序(行优先)排列,除非指定了 F 顺序,在这种情况下,它将按 Fortran 顺序(列优先)排列 -
- 'C':C 风格的行优先顺序。
- 'F':Fortran 风格的列优先顺序。
- 'A':如果输入是 Fortran 连续的,则为 'F',否则为 'C'。
- 'K':这是默认值,使顺序尽可能接近输入。
返回值
此函数返回一个未初始化值的数组,其形状和类型与输入相同数组。
示例
以下是一个简单的示例,使用 Numpy empty_like() 函数创建一个与现有数组形状相同但值未初始化的 Numpy 数组 -
import numpy as np original_array = np.array([[1, 2, 3], [4, 5, 6]]) empty_array = np.empty_like(original_array) print("包含未初始化值的 Numpy 数组 - ", empty_array)
输出
以下是上述代码的输出 -
包含未初始化值的 Numpy 数组 - [[ 140086793428272 140086793428272 7575175998026834798] [7307491100562890867 8390032522262880356 7232535146496532584]]
指定数据类型
我们可以使用 dtype 参数指定未初始化数组的数据类型。例如,如果我们需要浮点型数据类型,则将 dtype 参数设置为"float"。
浮点型数据类型数组
在以下示例中,数组的指定数据类型为 float32:
import numpy as np array_c = np.array([[7, 8, 9], [10, 11, 12]], dtype=np.int32) empty_array_float = np.empty_like(array_c, dtype=np.float32) print("包含未初始化值和浮点数据类型的 Numpy 数组 - ", empty_array_float)
输出
以下是上述代码的输出 -
包含未初始化值和浮点数据类型的 Numpy 数组 - [[-3.1457752e-09 4.5900932e-41 -3.1457752e-09] [ 4.5900932e-41 1.9096748e-19 1.9348873e-19]]
字符串数据类型数组
当我们使用 numpy.empty_like() 创建字符串数据类型数组时,它会使用未分配的占位符初始化每个条目,由于内存未初始化,占位符通常是随机字符。
import numpy as np array_d = np.array([[7, 8, 9], [10, 11, 12]], dtype=np.int32) empty_array_string = np.empty_like(array_d, dtype=np.str_) print("未初始化字符串数据类型的 Numpy 数组 - ", empty_array_string)
输出
以下是上述代码的输出 -
具有未初始化字符串数据类型的 Numpy 数组 - [['' '' ''] ['' '' '']]
示例:多维数组
numpy.empty_like() 函数也可用于创建与现有多维数组具有相同形状和类型的多维数组,但其值未初始化。这在处理高维数据结构时非常有用。
在本例中,我们创建一个包含未初始化值的三维数组,其形状与 3x3x3 数组相同:
import numpy as np original_3d_array = np.ones((3, 3, 3)) empty_3d_array = np.empty_like(original_3d_array) print("包含未初始化值的三维 Numpy 数组 - ", empty_3d_array)
输出
以下是上述代码的输出 -
包含未初始化值的三维 Numpy 数组 - [[[ 1.13390552e-313 0.00000000e+000 6.91661577e-310] [-9.36148521e-273 6.91661583e-310 6.91661577e-310] [ 1.13241387e-009 6.91661576e-310 6.91661577e-310]] [[ 1.99122267e-022 6.91661576e-310 6.91661577e-310] [-4.66087507e-037 6.91661576e-310 6.91661577e-310] [ 1.78189299e+079 6.91661577e-310 6.91661577e-310]] [[ 3.14604004e-188 6.91661576e-310 6.91661577e-310] [-4.72870412e-200 6.91661576e-310 6.91661577e-310] [-2.68644763e+091 6.91661577e-310 1.73911107e-321]]]
numpy_array_creation_routines.html