【发布时间】:2023-03-20 22:39:02
【问题描述】:
我有一个 N x M numpy 数组(矩阵)。这是一个 3 x 5 数组的示例:
x = numpy.array([[0,1,2,3,4,5],[0,-1,2,3,-4,-5],[0,-1,-2,-3,4,5]])
我想扫描x 的所有列,如果每列的值等于特定值,则替换它们。
例如,此代码旨在将所有负值(值等于列号)替换为 100:
for i in range(1,6):
x[:,i == -(i)] = 100
此代码获得此警告:
DeprecationWarning: using a boolean instead of an integer will result in an error in the future
我正在使用 numpy 1.8.2。如何在不降级 numpy 的情况下避免此警告?
【问题讨论】:
-
这样做不会在 1.9.2 上产生警告
-
是的,但是 1.8.2 呢?
-
@bernie OP 是 probably on an older version of python。似乎从 2.7 开始,默认情况下会抑制开发人员警告。
-
您是说您正在替换所有负值。但在您的循环中,
i == -(i)仅当i == 0时为True。但是由于range(1, 6),i永远不会为 0。所以,您在循环中执行了 6 次x[:, False]。这是你想要的吗?
标签: python arrays numpy replace