Python индекс 2d массива из 1d массива без циклов - PullRequest
0 голосов
/ 15 февраля 2020

Я создаю двумерный массив (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.

Есть идеи? Заранее спасибо.

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