为什么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 so
getsizeof(csv_数据)
可能无法反映数据的实际大小看起来像是您可以查看(在上找到)
getsizeof
只提供列表对象本身的大小,而不是它包含的项的大小。