根据其他列表的值替换列表中的值?

时间:2016-12-26 10:42:18

标签: python numpy

我有两个相同长度的列表。一个代表实际值,另一个代表某种质量值。根据质量阈值(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) 

1 个答案:

答案 0 :(得分:3)

您可以在boolean indexing中使用蒙版数组和

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])