NumPy - 数组大小
NumPy 数组大小
NumPy 数组的大小是指数组中包含的元素总数。了解数组的大小对于执行各种操作(例如重塑、广播和迭代元素)至关重要。
在本教程中,我们将讨论如何确定和操作 NumPy 数组的大小。
检查数组大小
NumPy 提供了 size 属性来检查数组中的元素数量。此属性返回一个表示元素总数的整数,无论其形状如何。无论数组是一维还是多维,size 属性始终会提供所有元素的数量。
了解数组的大小在各种场景中都很有用,例如迭代元素、重塑数组以及优化内存使用。
示例:迭代元素
当需要迭代数组中的每个元素时,了解大小有助于定义循环的范围 -
import numpy as np # 创建一维数组 array = np.array([1, 2, 3, 4, 5]) # 使用 size 属性进行迭代 for i in range(array.size): print(array[i])
以下是得到的输出 -
1 2 3 4 5
示例:内存计算
您可以使用 NumPy 中的"itemsize"属性,将数组的大小乘以每个元素的大小来计算其内存消耗 -
import numpy as np array = np.ones((1000, 1000), dtype=np.float64) memory_usage = array.size * array.itemsize print("内存使用量(字节):", memory_usage)
这将产生以下结果 -
内存使用量(字节):8000000
NumPy 数组大小 vs. 数组形状
size 属性给出数组中元素的总数,而 shape 属性则提供数组的维度。数组的大小可以通过将所有维度相乘,根据形状计算得出。
示例
在本例中,我们分别使用 NumPy 的"shape"和"size"属性来获取数组的形状和大小 -
import numpy as np # 创建三维数组 array = np.zeros((2, 3, 4)) # 检查形状和大小 print("数组形状:", array.shape) print("数组大小:", array.size)
数组的形状为 (2, 3, 4),大小为 2 * 3 * 4 = 24 -
数组形状:(2, 3, 4) 数组大小: 24
调整数组大小
NumPy 中的 resize() 函数用于调整数组大小。此函数会原地更改数组的形状和大小,新形状必须与元素总数兼容。
如果新形状大于原始形状,则新数组将填充原始数组的重复副本。如果新形状小于原始形状,则原始数组将被截断。
与 reshape() 函数(它仅更改数组的形状而不更改其数据)不同,resize() 函数还可以更改数组的大小,添加新元素或删除现有元素。
示例:调整为更大的数组
在此示例中,原始数组的大小被调整为"2x5"数组。新元素通过重复原始数组来填充 -
import numpy as np # 创建一维数组 array_1d = np.array([1, 2, 3]) # 将数组调整为更大的大小 resized_array = np.resize(array_1d, (2, 5)) print("原始数组: ", array_1d) print("调整后的数组: ", resized_array)
执行上述代码后,我们得到以下输出 -
原始数组: [1 2 3] 调整后的数组: [[1 2 3 1 2] [3 1 2 3 1]]
示例:调整大小为一个更小的数组
此处,原始的"2x3"数组被调整为"2x2"数组。多余的元素会被截断 -
import numpy as np # 创建二维数组 array_2d = np.array([[1, 2, 3], [4, 5, 6]]) # 调整数组大小 resized_array = np.resize(array_2d, (2, 2)) print("原始数组: ", array_2d) print("调整后数组: ", resized_array)
结果如下 -
原始数组: [[1 2 3] [4 5 6]] 调整后数组: [[1 2] [3 4]]
示例:就地调整大小
在此示例中,原始数组被就地调整为"2x5"数组。新元素用零填充 -
import numpy as np # 创建一维数组 array_1d = np.array([1, 2, 3]) # 就地将数组调整为更大的大小 array_1d.resize((2, 5)) print("调整大小后的数组: ", array_1d)
我们得到如下所示的输出 -
调整大小后的数组: [[1 2 3 0 0] [0 0 0 0 0]]