Заменить значения в одной матрице с NA от другого в тех же позициях - PullRequest
1 голос
/ 09 мая 2019

У меня есть две матрицы одинаковой формы, заполненные поплавками, но у одной из матриц есть NA в некоторых позициях. Я хочу сделать так, чтобы другая матрица также имела NA в тех же позициях.

Я могу придумать несколько наивных решений:

1) Любые условные циклы - очень медленно

2) Преобразуйте NA в 0, умножьте матрицы по элементам так, чтобы матрица без NA получила 0 в нужных позициях, а затем разделите их поэлементно, чтобы вернуться к исходным значениям и, наконец, преобразовать 0 в NA - быстрее, но все же неэффективно и неуклюже

Я хочу найти эффективный способ решения этой проблемы, поскольку мне нужно выполнить эту операцию несколько миллионов раз.

1 Ответ

0 голосов
/ 09 мая 2019

Если A - матрица со значениями NaN, а B - другая матрица.

import numpy as np

# Construct example matrices
A = np.random.random((3,3))
B = np.random.random((3,3))
# Set two values to np.nan
A[0,:2] = np.nan
# Set values in B to np.nan in the same locations that they occur in A
B[np.isnan(A)] = np.nan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...