Как установить элементы массива numpy на основе элементов другого массива numpy - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь установить elemnts array1 в nan на основе элементов array2, которые являются nan.

Ниже приведен мой код (который не работает)

Я бы очень ценим помощь :)

array1 = np.array([1.,1.,1.,1.,1.,1.,1.,1.,1.,1.])
array2 = np.array([2.,2.,2.,2.,np.nan,np.nan,np.nan,2.,2.,2.])

#I want to create:
#[1.,1.,1.,1.,np.nan,np.nan,np.nan,1.,1.,1.]

# I've tried:
array1[array2 == np.nan] = np.nan
print(array1)
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]

Ответы [ 2 ]

4 голосов
/ 01 мая 2020

Использовать np.isnan.

import numpy as np
array1 = np.array([1.,1.,1.,1.,1.,1.,1.,1.,1.,1.])
array2 = np.array([2.,2.,2.,2.,np.nan,np.nan,np.nan,2.,2.,2.])
array1[np.isnan(array2)] = np.nan
print(array1)

Вывод по желанию:

[ 1.  1.  1.  1. nan nan nan  1.  1.  1.]
1 голос
/ 01 мая 2020

Вы можете использовать numpy.argwhere, чтобы найти индексы с np.nan и, наконец, использовать эти индексы, чтобы изменить значение массива 1.

import numpy as np

array1 = np.array([1.,1.,1.,1.,1.,1.,1.,1.,1.,1.])
array2 = np.array([2.,2.,2.,2.,np.nan,np.nan,np.nan,2.,2.,2.])

inds = np.argwhere(np.isnan(array2))
print(inds)
array1[inds] = np.nan

print(array1)
[[4]
 [5]
 [6]]
[ 1.  1.  1.  1. nan nan nan  1.  1.  1.]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...