Я создаю двумерный массив (60,4000), в котором каждая строка имеет диапазон элементов, которые установлены ненулевым. Я сделал это, как показано ниже
for k in range(0, self.number_leaves):
fluence_line = np.zeros(int(self.max_mlc_aperture * self.inv_resolution), dtype=np.int)
left_ind = int(round(self.bank_A_leaves[beam_no, control_point, k] * self.inv_resolution)) + 2000
right_ind = int(round(self.bank_B_leaves[beam_no, control_point, k] * self.inv_resolution)) + 2000
fluence_line[int(left_ind):int(right_ind)] = mu * self.total_mu[beam_no]
fluence.append(fluence_line)
return np.asarray(fluence)
Что я хотел бы сделать или знать, может ли это быть сделано в несколько строк? Итак, у меня пока есть это.
f = np.zeros((self.number_leaves, int(self.max_mlc_aperture * self.inv_resolution)), dtype=np.int)
l = self.bank_A_leaves[beam_no, control_point, :].astype(int) * self.inv_resolution + 2000
r = self.bank_B_leaves[beam_no, control_point, :].astype(int) * self.inv_resolution + 2000
Итак, я хочу использовать диапазон l: r для установки элементов каждой строки f, подумал, что это может сработать f[:, l:r] = 1
, но я получаю ошибку «Только скалярные целочисленные массивы могут быть преобразованы в скалярный индекс». Оба массива являются int32.
Есть идеи? Заранее спасибо.