Увеличение индексов массива без циклов на основе фильтра 2D

#python #arrays #numpy #increment #indices

#python #массивы #numpy #увеличение #индексы

Вопрос:

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

Одномерный пример:

 a = np.zeros(10,dtype=np.int)
ifla& = [1,3,5,1,1,3,1,7,3,5,1,1]
a[ifla&] = 1 
  

дает
a
массив([0, 1, 0, 1, 0, 1, 0, 1, 0, 0])

То, что я хочу, это массив ([0,6,0,3,0,2,0,1,0,0])

Мне нужно сделать это в 2D

 array = np.zeros(400,600)
fla&.shape 
 (2000,20)
for i in np.ran&e(20):
  for j in np.ran&e(2000) :
     if (fla&[i,j] ==1) : 
# ilat, ilon and fla& are all same shape
# ilat and ilon will contain positive int that are indices to array    
        array[ilat[i,j],ilon[i,j]]  = 1
  

то, что я хотел бы сделать, это что-то вроде:

   ifla&= np.where(fla& ==1)
  array[ilat[ifla&],ilon[ifla&]]  = 1
  

Комментарии:

1. Для одномерного массива, np.bincount(ifla&) кажется, делает то, что вы хотите. Я не совсем понимаю, как вы индексируете fla&[i,j] в td .

2. Надеюсь, я прояснил свое намерение, отредактировал OP.