Numpy使用条件查询,无法修改数值问题

Numpy使用条件查询,无法修改数值问题

问题:

举例:

# 创建数组
arr = np.array([1, 2, 3, 1, 4, 5, 6, 7, 9, 1, 5, 6, 4])
print(arr[arr == 1])

image-20230113201038827

这里,我们想将arr数组的第一个1,改为2

# 将arr
print(nn[nn == 1][0])
arr[arr == 1][0] = 2
print(nn[nn == 1][0])

image-20230113201309963

  • 发现结果没有改变

在使用Numpy时,如果array后面加了condition,则无法直接修改其内容(应该是算法没有实现记录对应的index,耽误了好久时间…)

解决方案:

  1. 首先记录下1在原数组中的索引index

x_index = []
for i in range(len(arr)):
    if arr[i] == 1:
        x_index.append(i)
  1. 其次再根据自身需求对数值进行修改

index=x_index[0]
skl_labels[index] = 2

很多人可能会问我为啥不直接按照下标改原数组的值呢?

我发现这个问题的时候数据极大,业务逻辑比这个复杂,比如这个需要你将第100个1改为2呢

有时候真的肉眼解决不了这些问题,所以在这里记录一下

猜你喜欢

转载自blog.csdn.net/weixin_66261421/article/details/128680125