我有两个相同长度的列表。一个代表实际值,另一个代表某种质量值。根据质量阈值(4),我想用其他值替换值(p.e.17)。我的方法是使用enumerate
迭代质量以获取索引并将值替换为某个索引。
有更好的方法吗?
import numpy as np
values = np.array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
quality = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
threshold = 4
value = 17
for i, qual in enumerate(quality):
if qual < threshold:
values[i] = value
# [17 17 17 17 4 4 4 4 4 4]
print(values)
答案 0 :(得分:3)
您可以在boolean indexing中使用蒙版数组和numpy:
values[quality < threshold] = value
应该在没有迭代的情况下完成这个技巧:
import numpy as np
values = np.array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
quality = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
threshold = 4
value = 17
values[quality < threshold] = value
print(values) # array([17, 17, 17, 17, 4, 4, 4, 4, 4, 4])