我是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个重复的数字替换为最后一个数字为奇数,再替换为第二个重复的(偶数)。
我一直在寻找有关视图和副本之间差异的解释。但是,即使尝试手动定义数组特定单元的内容(循环错误地定义了该单元的内容),它也不会改变。
能帮我解决这个问题吗? 谢谢
答案 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都