用 NaN 替换 Python 数组的一部分

时间:2021-07-18 16:46:47

标签: python arrays numpy

我正在尝试用 NaN 替换我的部分数组(假设是给定数组长度的 10%)。我知道如果我只想替换特定值(例如大于 255),我可以使用 arr[arr > 255] = np.NaN 来完成。但是如果我想要随机选择替换值怎么办?

1 个答案:

答案 0 :(得分:1)

这是您尝试的吗:

import numpy as np
import random

an_array = np.array([5, 6, 7,2,4,5,6,7,8,9])
an_array = an_array.astype("float")

percent_len = round(len(an_array) * 10 / 100)
print(f'percent len : {percent_len}')
index_visited = []

print('Before:')
print(an_array)

for i in range(percent_len):
    while True:
        some_index = random.randint(0,percent_len)
        if some_index in index_visited:
            continue
        else:
            index_visited.append(some_index)
            break
    
    an_array[some_index] = np.nan

print()
print('After:')
print(an_array)

结果:

enter image description here

相关问题