【发布时间】:2018-10-04 06:07:41
【问题描述】:
我是 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 次重复的数字替换为最后一位奇数与之前的(偶数)数的第二次重复。
我一直在寻找有关视图和副本之间差异的解释。但是,即使尝试手动定义数组的特定单元格的内容(循环错误地定义了它),它也不会改变。
您能帮我解决这个问题吗? 谢谢
【问题讨论】:
-
这是浮点精度。查看
np.float32(168_000_001)的输出。你可以改用float64。 -
谢谢保罗。您的建议解决了问题。