У меня есть два массива numpy NS, EW для подведения итогов. Каждый из них имеет отсутствующие значения в разных позициях, какОбработать nan как ноль в суммировании массива numpy за исключением nan во всех массивах
NS = array([[ 1., 2., nan],
[ 4., 5., nan],
[ 6., nan, nan]])
EW = array([[ 1., 2., nan],
[ 4., nan, nan],
[ 6., nan, 9.]]
Как я могу выполнить операцию суммирования в Numpy пути, который будет относиться к нанам как ноль, если один массив имеет нана на месте, и держать нана, если оба массивы имеют nan в том же месте.
В результате я ожидаю увидеть это
SUM = array([[ 2., 4., nan],
[ 8., 5., nan],
[ 12., nan, 9.]])
Когда я пытаюсь
SUM=np.add(NS,EW)
это дает мне
SUM=array([[ 2., 4., nan],
[ 8., nan, nan],
[ 12., nan, nan]])
Когда я пытаюсь
SUM = np.nansum(np.dstack((NS,EW)),2)
это дает мне
SUM=array([[ 2., 4., 0.],
[ 8., 5., 0.],
[ 12., 0., 9.]])
Конечно, я могу реализовать свою цель, делая работу элемент уровня,
for i in range(np.size(NS,0)):
for j in range(np.size(NS,1)):
if np.isnan(NS[i,j]) and np.isnan(EW[i,j]):
SUM[i,j] = np.nan
elif np.isnan(NS[i,j]):
SUM[i,j] = EW[i,j]
elif np.isnan(EW[i,j]):
SUM[i,j] = NS[i,j]
else:
SUM[i,j] = NS[i,j]+EW[i,j]
, но это очень медленно. Поэтому я ищу более бесчисленное решение для решения этой проблемы.
Благодарим за помощь!
Он отлично работает, а также примерно в 200 раз быстрее, чем я использую операцию уровня элемента. Спасибо вам за помощь! – Superstar