NumPy - 数组大小



NumPy 数组大小

NumPy 数组的大小是指数组中包含的元素总数。理解数组的大小对于执行各种操作(例如重塑、广播和迭代元素)非常重要。

在本教程中,我们将讨论如何确定和操作 NumPy 数组的大小。

检查数组大小

NumPy 提供了 `size` 属性来检查数组中的元素数量。此属性返回一个整数,表示元素的总数,而不管其形状如何。无论数组是一维还是多维,`size` 始终提供所有现有元素的数量。

了解数组的大小在各种情况下都很有用,例如迭代元素、重塑数组和优化内存使用。

示例:迭代元素

当您需要迭代数组中的每个元素时,了解大小可以帮助您定义循环的范围。

import numpy as np

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

# Iterating using the size attribute
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 in bytes:", memory_usage)

这将产生以下结果:

Memory usage in bytes: 8000000

NumPy 数组大小与数组形状

虽然 `size` 属性给出数组中元素的总数,但 `shape` 属性提供数组的维度。数组的大小可以通过将所有维度相乘来从形状计算出来。

示例

在此示例中,我们分别使用 NumPy 的 "shape" 和 "size" 属性来检索数组的形状和大小。

import numpy as np

# Creating a 3D array
array = np.zeros((2, 3, 4))

# Checking the shape and size
print("Array shape:", array.shape)
print("Array size:", array.size)

数组的形状是 (2, 3, 4),大小是 2 * 3 * 4 = 24。

Array shape: (2, 3, 4)
Array size: 24

调整数组大小

NumPy 中的 `resize()` 函数用于调整数组大小。此函数就地更改数组的形状和大小,并且新形状必须与元素总数兼容。

如果新形状大于原始形状,则新数组将填充原始数组的重复副本。如果新形状较小,则原始数组将被截断。

与仅更改数组形状而不更改其数据的 `reshape()` 函数不同,`resize()` 函数也可以更改数组的大小,添加新元素或删除现有元素。

示例:调整为较大数组

在此示例中,原始数组被调整为 "2x5" 数组。新元素通过重复原始数组来填充。

import numpy as np

# Creating a 1D array
array_1d = np.array([1, 2, 3])

# Resizing the array to a larger size
resized_array = np.resize(array_1d, (2, 5))

print("Original array:\n", array_1d)
print("Resized array:\n", resized_array)

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

Original array:
 [1 2 3]
Resized array:
 [[1 2 3 1 2]
  [3 1 2 3 1]]

示例:调整为较小数组

在这里,原始 "2x3" 数组被调整为 "2x2" 数组。多余的元素被截断。

import numpy as np

# Creating a 2D array
array_2d = np.array([[1, 2, 3], [4, 5, 6]])

# Resizing the array to a smaller size
resized_array = np.resize(array_2d, (2, 2))

print("Original array:\n", array_2d)
print("Resized array:\n", resized_array)

产生的结果如下:

Original array:
 [[1 2 3]
  [4 5 6]]
Resized array:
 [[1 2]
  [3 4]]

示例:就地调整大小

在此示例中,原始数组就地调整为 "2x5" 数组。新元素填充为零。

import numpy as np

# Creating a 1D array
array_1d = np.array([1, 2, 3])

# In-place resizing the array to a larger size
array_1d.resize((2, 5))

print("Resized array:\n", array_1d)

我们将获得如下所示的输出:

Resized array:
 [[1 2 3 0 0]
  [0 0 0 0 0]]
广告