当前位置: 首页 > 知识库问答 >
问题:

Python3 Numpy数组大小比较列表

谭志用
2023-03-14

我一直认为numpy数组比list更紧凑,占用的内存更少,但是,对于三维float64 np数组,

print (sys.getsizeof(result2)/1024./1024./1024.)
print (sys.getsizeof(result2.astype('float16'))/1024./1024./1024.)
print (sys.getsizeof(list(result2))/1024./1024./1024.)
print (sys.getsizeof(result2.tolist())/1024./1024./1024.)

输出是,,

0.6521792411804199
0.16304489970207214
0.00033977627754211426
0.0003019943833351135

列表占用的内存要小得多。使用sys是否有效。列表的getsizeof?如果是,我能做些什么来提高np数组内存使用率吗?

######################

使用pympler@J_H(pympler似乎不能处理列表中的数组,比如list(一个3-D数组)

print (result2.nbytes/1024./1024./1024.)
print (asizeof.asizeof(result2)/1024./1024./1024.)
print (result2.astype('float16').nbytes/1024./1024./1024.)
print (asizeof.asizeof(list(result2))/1024./1024./1024.)
print (asizeof.asizeof(result2.tolist())/1024./1024./1024.)

0.6521791219711304
0.6521792411804199
0.1630447804927826
0.004566863179206848
4.078836984932423

谢谢大家!!

共有1个答案

公良同
2023-03-14

您显示每个列表元素消耗8个字节。

但每个元素只是一个指向24字节浮点对象的指针。

此外,当您开始使用三维阵列时,您将看到列表中的列表。您可以自己递归数据结构,以准确地将分配的字节相加。或者你可以用Pypler。

 类似资料:
  • 问题内容: 以下代码段带有输出注释(如ideone.com所示): 有人可以解释为什么这样的输出吗? 实施细节 语言规范规定了这种行为,还是由实施者决定? 任何主要的Python实现之间都有区别吗? Python语言的版本之间有区别吗? 问题答案: 从python 2手册: CPython实现细节:除数字外,其他类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。 当你对两个字

  • 我有以下数组列表 现在我需要比较这两个数组,并检查是否有id中的任何值存在于empIds中。如果是,我需要以布尔值true退出。我是这样做的。 但这需要很多时间。有人能帮我优化一下吗?

  • 我必须将元组与元组列表进行比较,如果整数小于列表中的任何元组,则返回True。例如,如果我有将返回True,因为单独元组(“番茄”,10,5)中的整数比列表中的元组(“橙色”,11,6)小,但是如果我有将返回False。 我试试这个 但不工作时,它应该返回假,我不知道为什么? 注意:字符串对于这个问题并不重要,我必须忽略它。

  • 问题内容: 在Java中工作,假设我有两个对象,这要归功于,我知道它们都是数组。进一步说,我想将这两个数组相互比较- 可能使用。有没有一种优雅的方法可以做到这一点,而无需借助详尽的if / else树来弄清楚需要使用哪种口味?我正在寻找比这更令人讨厌的东西: 问题答案: 您可以使用反射。 反射仅用于在运行时找到正确的方法,而不会引起您的回避。实际方法应该运行得很快。 显然,生产版本需要更强大的异常

  • 问题内容: 由于我不是Android开发中的佼佼者,因此我尝试了一些对自己和朋友的手机都有效的方法,但是我从市场上收到一些报告,认为它可能不适用于所有设备,并且做错了比较。无论如何。该项目很简单,它从sql获取命令,然后在游戏中玩家尝试完成该命令。所以我有2个数组。我一开始就这样称呼它: 在游戏过程中,如果玩家单击按钮,它将更改combo的值,例如combo [7] =“ 1”; 当他单击最后一个

  • 本文向大家介绍JavaScript 数组比较,包括了JavaScript 数组比较的使用技巧和注意事项,需要的朋友参考一下 示例 为了进行简单的数组比较,您可以使用JSON stringify并比较输出字符串: 注意:这仅在两个对象都可以JSON序列化并且不包含循环引用的情况下起作用。可能会抛出TypeError: Converting circular structure to JSON 您可以