小编hzf*_*mer的帖子

python中numpy数组的内存是如何分配的?

我试图理解numpy“2D”数组引起的差异,即numpy.zeros((3, ))、numpy.zeros((3, 1))、numpy.zeros((1, 3))。

我曾经id查看每个元素的内存分配。但我在 iPython 控制台中发现了一些奇怪的输出。

a = np.zeros((1, 3))
In [174]: id(a[0, 0])
Out[174]: 4491074656

In [175]: id(a[0, 1])
Out[175]: 4491074680

In [176]: id(a[0, 2])
Out[176]: 4491074704

In [177]: id(a[0, 0])
Out[177]: 4491074728

In [178]: id(a[0, 1])
Out[178]: 4491074800

In [179]: id(a)
Out[179]: 4492226688

In [180]: id(a[0, 1])
Out[180]: 4491074752
Run Code Online (Sandbox Code Playgroud)

元素的记忆是

  1. 不连续
  2. 更改而不重新分配

此外,形状 (1, 3) 的数组中的元素一开始似乎是连续存储的,但对于其他形状则不然,例如

In [186]: a = np.zeros((3, ))

In [187]: id(a)
Out[187]: 4490927280

In [188]: id(a[0])
Out[188]: 4491075040

In [189]: id(a[1]) …
Run Code Online (Sandbox Code Playgroud)

python memory numpy mpi4py

4
推荐指数
1
解决办法
4837
查看次数

标签 统计

memory ×1

mpi4py ×1

numpy ×1

python ×1