为什么numpy.array()使用的RAM比python列表多得多?
这是我的密码:为什么numpy.array()使用的RAM比python列表多得多?,python,numpy,Python,Numpy,这是我的密码: import numpy as np import csv from sys import getsizeof def get_csv_data(csv_file): """get csv data""" csv_data = [] with open(csv_file, 'r') as f: csv_reader = csv.reader(f) for row_data in csv_reader:
import numpy as np
import csv
from sys import getsizeof
def get_csv_data(csv_file):
"""get csv data"""
csv_data = []
with open(csv_file, 'r') as f:
csv_reader = csv.reader(f)
for row_data in csv_reader:
csv_data.append(row_data)
return csv_data
def get_nparray_size():
p = r'D:\PySpace\DataAnalysisReport\testdata\bbb\test.csv'
csv_data = get_csv_data(p)
print('origin size:', getsizeof(csv_data))
np_data = np.array(csv_data)
print('np array size:', np_data.nbytes)
此csv文件包含81行1168列
然后输出:
原始尺寸:768,
np数组大小:447685056
我想知道为什么结果是这样的?
getsizeof
不反映变量的全部内存使用情况,只考虑基本对象大小。对于您的CSV,它将是一个2D数组,如果我理解得很好,则只考虑单个维度;但实际数字的存储将被忽略
有关更全面的解释,请参见。
getsizeof
不反映变量的全部内存使用情况,而只考虑基本对象大小。对于您的CSV,它将是一个2D数组,如果我理解得很好,则只考虑单个维度;但实际数字的存储将被忽略
另请参阅以获得更全面的解释。81*1168=94608 so
getsizeof(csv_数据)
可能无法反映数据的真实大小看起来像是您可以查看的东西(在上找到)getsizeof
只提供列表对象本身的大小,而不是它包含的项目。81*1168=94608 sogetsizeof(csv_数据)
可能无法反映数据的实际大小看起来像是您可以查看(在上找到)getsizeof
只提供列表对象本身的大小,而不是它包含的项的大小。