numpy的nbytes方法思考

文章探讨了numpy数组在Python中内存占用的计算,通过nbytes方法和sys.getsizeof函数展示了两者在计算数组内存大小时的不同。nbytes仅计算数据本身占用的字节,而sys.getsizeof还包括了数组结构的开销。以一个int64类型的5x5二维数组为例,解释了数据占用200字节,而实际内存开销更大的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import numpy as np
import sys
a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28 ,29, 30],
              [31, 32, 33, 34, 35]],dtype=np.int64)
print(a.nbytes)
print(sys.getsizeof(a))
print(sys.getsizeof(np.array([[]],dtype=np.int64)))

200   #只是存储数据所占的字节
256   #存储数据和二维数组所占字节
56    #空二维数组所占字节

numpy的nbytes方法和sys.getsizeof函数区别
1、数组的数据类型是int 64,一个int 64中有64位,一个字节中有8位,所以一个int 64就是8字节,8×5×5=200 所以所有数据消耗200字节。
2、sys.getsizeof(a)方法得到的是a占用的内存大小,因为数组是可变类型的数据,系统给数组分配的比200字节要大一些。
总结:
nbytes方法计算时,确实没有计算数组的开销,数组实际占用的空间要稍大一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值