python - 字典条目都是一样的

标签 python arrays numpy dictionary

我正在使用嵌套循环来填充字典中的条目。字典中的每个条目都包含一个 Numpy 数组。每个 Numpy 数组包含三个值。

每个字典条目都应该包含一个唯一的 Numpy 数组,但是当脚本运行时,所有 169 个字典条目都将填充完全相同的 Numpy 数组。每一个都应该是不同的。尝试调试后,我意识到重复的条目实际上是条目 #168(最后一个)的正确值。

我不是发生这种情况的原因,因为命令 print(IC_sub_units) 在 I/O 控制台中输出正确的值,但是当我尝试将它们存储在字典中时,所有条目结果是一样的。我猜问题出在最后一段代码中:IC_units[i] = IC_sub_units

我连续几个小时一直在尝试解决这个问题。这可能是非常简单的事情。有什么想法吗?

# Determining incremental costs (rise/run)
IC_sub_units = np.zeros(3)
IC_units = {}
for i in range(169):
    for j in range(1, 4):
        IC_sub_units[j-1] = (y[i][j]-y[i][j-1])/(x[i][j]-x[i][j-1])
    print(IC_sub_units)
    IC_units[i] = IC_sub_units

打印 IC_units 会为字典条目 0 到 168 生成以下输出。下面显示的值是条目 168 的正确值,但由于某种原因,它出现在每个字典条目中。

 157: array([40.83088018, 42.50615291, 44.18142564]),
 158: array([40.83088018, 42.50615291, 44.18142564]),
 159: array([40.83088018, 42.50615291, 44.18142564]),
 160: array([40.83088018, 42.50615291, 44.18142564]),
 161: array([40.83088018, 42.50615291, 44.18142564]),
 162: array([40.83088018, 42.50615291, 44.18142564]),
 163: array([40.83088018, 42.50615291, 44.18142564]),
 164: array([40.83088018, 42.50615291, 44.18142564]),
 165: array([40.83088018, 42.50615291, 44.18142564]),
 166: array([40.83088018, 42.50615291, 44.18142564]),
 167: array([40.83088018, 42.50615291, 44.18142564]),
 168: array([40.83088018, 42.50615291, 44.18142564])}

最佳答案

只需将 IC_sub_units 的定义移至第一个循环即可:

IC_units = {}
for i in range(169):
    IC_sub_units = np.zeros(3)
    for j in range(1, 4):
        IC_sub_units[j-1] = (y[i][j]-y[i][j-1])/(x[i][j]-x[i][j-1])
    print(IC_sub_units)
    IC_units[i] = IC_sub_units

关于python - 字典条目都是一样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70441015/

相关文章:

php - in_array 的随机错误

python - 避免 python 3.5 中的溢出

python - 如何用numpy计算二维向量和OX之间的角度?

python - YYMM 到日期时间 python

javascript - 通过 onClick 传递给 JavaScript 函数的数组正在创建 [object, object]

ruby - 按另一个数组对数组进行排序

python-3.x - 当我尝试将数据帧输出到 csv 文件时,为什么我的输出只有一行?Python3/boto3

python - 查找所有出现的正则表达式模式并替换为 eval 输出

python - 图像处理中的多线程——视频python opencv

Python/SQLAlchemy - 更新外键时加载关系?