Каков наилучший способ создания двумерного массива со значениями NaN со случайными индексами? - PullRequest
0 голосов
/ 30 января 2019

Оба следующих подхода создают двумерный массив со значениями NaN со случайными индексами.Есть ли какой-нибудь ярлык для этого?

import numpy as np

# approach 1
arr1 = np.random.randint(1,11,(5,5)).astype('float')
for rows, cols in [arr1.shape]:
    i_rows = np.random.randint(0, rows, 5)
    i_cols = np.random.randint(0, cols, 5)
arr1[i_rows, i_cols] = np.nan

# approach 2
arr2 = np.random.randint(1, 11, 25).astype('float')
for i in np.random.randint(0, arr2.size, 5):
    arr2[i] = np.nan
arr2 = arr2.reshape((5,5))

1 Ответ

0 голосов
/ 30 января 2019

Это способ сделать это:

import numpy as np

np.random.seed(100)
# Make input
arr1 = np.random.randint(1, 11, (5, 5)).astype('float')
# Select five indices from the whole array
idx_nan = np.random.choice(arr1.size, 5, replace=False)
# "Unravel" the indices and set their values to NaN
arr1[np.unravel_index(idx_nan, arr1.shape)] = np.nan
print(arr1)

Вывод:

[[ 9.  9.  4.  8.  8.]
 [ 1.  5.  3.  6.  3.]
 [ 3. nan nan nan  9.]
 [ 5.  1. 10.  7.  3.]
 [ 5. nan  6.  4. nan]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...