查找 numpy 数组的大小

pythonnumpyserver side programmingprogramming

Numpy 通常与 Python 中的 SciPy 和 matplotlib 等包一起使用。此外,Numpy 中的数组比 Python 中的列表更快,因此该模块广泛用于复杂的数学算法和问题。它具有各种函数和方法,使我们的矩阵运算任务变得轻松简单。

在 Numpy 数组中,有两种类型的数组 -

  • 单维数组

  • 多维数组

单维数组(1D 数组)

存储在数组中的元素的数据类型为 - 字符串、整数、布尔值或浮点数。这些数组称为单维或 1 维数组。如此定义的数组的形状将是线性的,并且通常表示为一维数组。

多维数组

这些数组可以存储任何数据类型的元素 - 字符串、整数、数组、布尔值等。它们在数组内部有数组,也称为嵌套数组,具有非线性结构。

通常,数组有两种类型 -

  • 数组的大小

  • 数组的内存大小

数组大小是指数组的长度或该特定数组中存在的独立数据元素的总数。

而数组的内存大小是指数组在系统硬件中占用的空间(对于较小的数组通常以字节为单位),用于存储该特定数组中存在的数据数组。

方法 1:使用 Itemsize() 函数

itemsize() 函数返回数组中每个元素占用的内存空间。返回的值以字节为单位。

语法

<array_object_name>.itemsize

返回整数值,该值被视为字节数。

示例 1

在下面的示例中,我们将使用 itemsize() 函数计算存储在 1 维 numpy 数组 中的每个元素占用的内存。除了显示大小、长度和所占用的总内存空间外,还显示了数组。

算法

  • 步骤 1 - 定义数组

  • 步骤 2 - 声明数组

  • 步骤 3 - 打印大小

  • 步骤 4 - 打印项目大小

import numpy

#创建 numpy 数组
arr = numpy.array([1,2,3,4,5])

#显示数组的长度
print(f"数组的长度:{numpy.size(arr)}")

#显示内存大小(以字节为单位)
print(f"一个元素占用的空间:{arr.itemsize} 字节")

#占用的总内存空间
print(f"该元素占用的总内存:{arr.itemsize*numpy.size(arr)} 字节")

输出

数组的长度:5
一个元素占用的空间:8 字节
元素占用的总内存:40 字节

示例 2

在下面的示例中,我们为多维 numpy 数组计算相同的信息。

import numpy

#创建 numpy 数组
arr = numpy.array([['a','b','c','d'], [1,2,3,4,5]])

arr_2 = numpy.array([ [[1,2,3], 'Tutorials Point'], ['a', 'e', 'i', 'o', 'u']])

#显示数组的长度
print(f'2D数组的长度:{numpy.size(arr)}')

#显示内存大小(以字节为单位)
print(f"一个元素占用的空间:{arr.itemsize} 字节")

#占用的总内存空间
print(f"元素占用的总内存:{arr.itemsize*numpy.size(arr)} 字节")

print()

print(f"3D数组的长度:{numpy.size(arr_2)}")
print(f"一个元素占用的空间:{arr_2.itemsize} 字节")
print(f"元素占用的总内存:{arr_2.itemsize*numpy.size(arr_2)} 字节")

输出

2D数组的长度:2
占用的空间一个元素占用空间:8 字节
元素占用内存总量:16 字节

3D 数组长度:2
一个元素占用空间:8 字节
元素占用内存总量:16 字节

方法 2:使用 Nbytes() 函数

nbytes() 是 Python 中 numpy 模块中的一个方法。此函数返回 numpy 数组占用的总空间(以字节为单位),不同于 itemsize 函数,后者返回仅由一个元素占用的内存空间。

语法

<array_object_name>.nbytes

返回整数值,该值被视为数组占用的总字节空间。

示例 1

在此示例中,使用 nbytes 函数创建了一个 1D numpy 数组 来解释占用的内存大小。数组的长度也会随之显示。

import numpy

arr = numpy.array([1,2,3,4,5])

#显示数组的长度
print(f"数组的长度:{numpy.size(arr)}")

#占用的总内存空间
print(f"元素占用的总内存:{arr.nbytes} 字节")

输出

数组的长度:5
元素占用的总内存:40 字节

示例 2

在下面的示例中,我们计算与上例中使用相同数据值的多维数组的长度和内存大小。

import numpy

arr = numpy.array([['a','b','c','d'], [1,2,3,4,5]])
arr_2 = numpy.array([ [[1,2,3], 'Tutorials Point'], ['a', 'e', 'i', 'o', 'u']])

#显示数组的长度
print(f'2D数组的长度:{numpy.size(arr)}')

#占用的总内存空间
print(f"元素占用的总内存:{arr.nbytes} 字节")

print()

print(f"3D数组的长度:{numpy.size(arr_2)}")
print(f"元素占用的总内存: {arr_2.nbytes} 字节")

输出

2D 数组的长度:2
元素占用的总内存:16 字节

3D 数组的长度:2
元素占用的总内存:16 字节

结论

与其他数据结构相比,Numpy 数组消耗的内存更少,这就是为什么它们用于处理大型数据集和执行复杂的数学计算的原因。itemsize 函数将计算每个元素的大小,而 nbytes 函数计算整个数组占用的内存空间。

它们用于各种领域,例如机器学习、数据分析师和计算物理、将数据转换为各种形式等等。它还用于数据的各种数值和理论计算。


相关文章