如何在大型numpy数组中分配列值?

时间:2018-10-03 21:48:54

标签: python arrays numpy

我是Python编程的新手,但在为非常大的numpy.array的第一列分配特定值时遇到问题。

这是我使用的代码:

import numpy as np

a = np.zeros ((365343020, 9), dtype = np.float32)

for n in range (0, 36534302):
    a[n*10:(n+1)*10,0] = n

第二行是我创建数组的地方,该数组由365343020行和9列组成,并用零填充;而连续的“ for”是要用一个向量替换数组的第一列,该向量的元素是36534302个连续整数,每个整数重复10次(例如[0,0,…,0,1,1,…,1,2, 2,...,36534301,36534301,...,36534301]。

代码似乎可以根据需要做出响应,直到大约168000000行或数组,然后将10个重复的数字替换为最后一个数字为奇数,再替换为第二个重复的(偶数)。

我一直在寻找有关视图和副本之间差异的解释。但是,即使尝试手动定义数组特定单元的内容(循环错误地定义了该单元的内容),它也不会改变。

能帮我解决这个问题吗? 谢谢

1 个答案:

答案 0 :(得分:0)

也许您的程序正在消耗太多内存。这是您的代码的一些基本数学。

Date type: float32
Bits used: 32 bits
Size of array: 3288087180 (365343020*9)
Total memory consumed: 105218789760 bits(13.15234872 GB)

1。如果存储在数组中的值不大,请尝试使用float8位。
2.尝试减小数组大小。
3. 1和2都