Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将图像转换为数组与直接初始化图像大小的数组_Python_Numpy_Python Imaging Library - Fatal编程技术网

Python 将图像转换为数组与直接初始化图像大小的数组

Python 将图像转换为数组与直接初始化图像大小的数组,python,numpy,python-imaging-library,Python,Numpy,Python Imaging Library,使用google colab,我想创建一个numpy数组,Y,它的形状类似于我所看到的图像(下面进一步解释)9999x146666 我发现有两种方法可以做到这一点: 方法1 使用以下命令加载图像: from PIL import Image Z = np.asarray(Image.open(*ImagePath*)) 将图像转换为数组(但我不确定这是如何发生的) 然后我可以简单地说Y=Z。当我仔细观察Y使用sys.getsizeof(Y)消耗的内存量时,它只报告112字节 方法2 如果我使

使用google colab,我想创建一个
numpy
数组,
Y
,它的形状类似于我所看到的图像(下面进一步解释)9999x146666

我发现有两种方法可以做到这一点:

方法1 使用以下命令加载图像:

from PIL import Image

Z = np.asarray(Image.open(*ImagePath*))
将图像转换为数组(但我不确定这是如何发生的)

然后我可以简单地说
Y=Z
。当我仔细观察
Y
使用
sys.getsizeof(Y)
消耗的内存量时,它只报告112字节

方法2 如果我使用以下方法粗略初始化形状为
9999x146666
的零的
numpy.array

Y = np.array(np.zeros((9999,146666)))
它毫不奇怪地使我的colab实例崩溃(我认为这意味着它耗尽了colab提供的所有内存)


所以我的问题是,两个阵列之间的区别是什么,一个重约112字节,另一个炸毁了我的电脑


是的,我用两种方法检查了数组的大小和类型。它们是一样的。
编辑:我被告知这可能与PIL作为一个库的工作方式有关。也就是说,它在磁盘上创建一个指向文件的指针,并且只在对其执行操作时加载它。但它仍然存在,为什么数组不像初始化那样炸毁我的会话?

尝试检查
arr2
的许多项以及
arr2
项的大小(以字节为单位)。比如:
np.array(np.zeros((99146)).size
np.array(np.zeros((99146)).itemsize
。你会看到它非常大。
Z
的大小是多少?
Z
的大小是9999x146666年,但如果
Z.shape
(9999x146666)
,我会试图理解这个大小差异背后的原因;而
Y=Z
Y
将具有相同的形状;大概
Z
会炸毁你的电脑。请提供一份报告。