Поэтапное применение - PullRequest
       2

Поэтапное применение

0 голосов
/ 26 августа 2018

Рассмотрим массивы:

a = np.array([[nan,  0.,  0.],
              [nan,  1.,  1.],
              [nan,  2.,  nan]])

b = np.array([2., 0., 0.])

Я пытаюсь добиться следующего:

  • дубль x, который не пропущен в элементе a
  • заменить соответствующий элемент в b на x
  • взять сумму этого массива.

В этом случае это:

For row = 2, col = 1
a[row, col] -> 2. # 1st col

Replace 1st element in `b` with 2.:
[2., 2., 0.]

Full matrix:
[[nan, sum([2,0,0]), sum([2,0,0])],
 [nan, sum([2,1,0]), sum([2,0,1])],
 [nan, sum([2,2,0]), nan]]

result = [[nan, 2, 2],
          [nan, 3, 3],
          [nan, 4, nan]]

Как этого добиться result?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Полагаю, ответ так же прост:

a - b + b.sum()
#array([[nan,  2.,  2.],
#       [nan,  3.,  3.],
#       [nan,  4., nan]])
0 голосов
/ 26 августа 2018

Может быть:

c=np.array([[sum(b.tolist())+y for i in range(len(x))] for y,x in enumerate(a.tolist())])
c[np.isnan(a)]=np.nan
print(c)

Выход:

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