Numpy使用条件查询,无法修改数值问题
问题:
举例:
# 创建数组
arr = np.array([1, 2, 3, 1, 4, 5, 6, 7, 9, 1, 5, 6, 4])
print(arr[arr == 1])
这里,我们想将arr数组的第一个1,改为2
# 将arr
print(nn[nn == 1][0])
arr[arr == 1][0] = 2
print(nn[nn == 1][0])
在使用Numpy时,如果array后面加了condition,则无法直接修改其内容(应该是算法没有实现记录对应的index,耽误了好久时间…)
解决方案:
x_index = []
for i in range(len(arr)):
if arr[i] == 1:
x_index.append(i)
index=x_index[0]
skl_labels[index] = 2
很多人可能会问我为啥不直接按照下标改原数组的值呢?
我发现这个问题的时候数据极大,业务逻辑比这个复杂,比如这个需要你将第100个1改为2呢
有时候真的肉眼解决不了这些问题,所以在这里记录一下