Измените значения всех элементов в подмассиве numpy при условии - PullRequest
1 голос
/ 07 августа 2020

Допустим, у меня есть 3d numpy ndarray с формой 5x7x3

import numpy as np

arr = np.random.rand(5,7,3)

Я бы хотел сделать следующее:

  • Возьмите каждый подмассив
  • Узнать, больше ли первое значение в подмассиве, чем сумма последнего до элементов.
  • Если условие истинно, то я хотел бы изменить все три элемента в подмассив с тем же значением (например, 2).

1 Ответ

1 голос
/ 07 августа 2020

можно сделать что-то вроде этого

import numpy as np

arr = np.random.randint(5,size=(5,7,3))
print(arr)
for i in range(len(arr)):
    for j in range(len(arr[i])):
        if arr[i][j][0]<arr[i][j][-1]+arr[i][j][-2]:
            arr[i][j]=[2,2,2]
print('updated array',arr)

вывод

[[[0 2 1]
  [0 2 3]
  [2 3 0]
  [1 0 0]
  [2 2 3]
  [1 4 2]
  [3 3 4]]

 [[3 1 0]
  [1 4 3]
  [0 1 1]
  [4 2 2]
  [1 1 0]
  [2 1 3]
  [0 4 3]]

 [[2 3 1]
  [0 4 4]
  [2 1 2]
  [4 3 2]
  [2 3 4]
  [0 2 3]
  [3 4 1]]

 [[0 4 1]
  [2 0 0]
  [2 2 3]
  [0 2 3]
  [0 4 4]
  [0 4 0]
  [1 2 3]]

 [[4 0 0]
  [3 4 1]
  [2 2 4]
  [3 0 4]
  [1 2 3]
  [4 3 1]
  [4 3 4]]]
dsfs [[[2 2 2]
  [2 2 2]
  [2 2 2]
  [1 0 0]
  [2 2 2]
  [2 2 2]
  [2 2 2]]

 [[3 1 0]
  [2 2 2]
  [2 2 2]
  [4 2 2]
  [1 1 0]
  [2 2 2]
  [2 2 2]]

 [[2 2 2]
  [2 2 2]
  [2 2 2]
  [2 2 2]
  [2 2 2]
  [2 2 2]
  [2 2 2]]

 [[2 2 2]
  [2 0 0]
  [2 2 2]
  [2 2 2]
  [2 2 2]
  [2 2 2]
  [2 2 2]]

 [[4 0 0]
  [2 2 2]
  [2 2 2]
  [2 2 2]
  [2 2 2]
  [4 3 1]
  [2 2 2]]]
...