Как добавить несколько результатов из цикла в один массив - PullRequest
0 голосов
/ 11 октября 2019

У меня есть цикл for в цикле while, который дает мне после каждой итерации массив ("all_position_ro"). Но в конце мне нужен один суммированный массив со всеми результатами из каждого iteration.

position_ro = [12, 25, 42]
start = 1

while start < 2:

    for i in position_ro:

        nn_ro = [i + start]

        nn_ro_minus = [i - start]

        n_ro = numpy.array(nn_ro)

        n_ro_minus = numpy.array(nn_ro_minus)

        print(("n_ro:" + str(start) +":" + str(n_ro)))

        print(("n_ro_minus:" + str(start) +":" + 
        str(n_ro_minus)))



        summ_position_ro = numpy.concatenate((position_ro_array,n_ro), axis =1)

        all_position_ro = numpy.concatenate((summ_position_ro,n_ro_minus), axis =1)

        print(("all_position_ro:"  + str(all_position_ro)))

    start = start+1

что я получаю:

position_ro:(array([12, 25, 42], dtype=int64),)

n_ro1:[[13 26 43]]

n_ro_minus1:[[11 24 41]]

all_position_ro:[[12 25 42 13 26 43 11 24 41]]



n_ro2:[[14 27 44]]

n_ro_minus2:[[10 23 40]]

all_position_ro:[[12 25 42 14 27 44 10 23 40]]

что мне нужно:

all_position_ro:[[12 25 42 13 26 43 11 24 41 14 27 44 10 23 40]]

1 Ответ

0 голосов
/ 11 октября 2019

Ваш код выглядит сложным, плюс используются некоторые переменные, которые не были объявлены (по крайней мере, в том, что я могу прочитать), например position_ro_array. Чтобы было легче читать, я бы сделал

position_ro_out = position_ro.tolist()
position_ro_out += [ii + 1 for ii in position_ro] + [ii - 1 for ii in position_ro] + [ii + 2 for ii in position_ro] + [ii - 2 for ii in position_ro]
position_ro_out = numpy.asarray(position_ro_out)

более компактным (но, возможно, менее читабельным)

position_ro_out = np.concatenate((position_ro, np.asarray([[[ii + kk] for ii in position_ro] + [[ii - kk] for ii in position_ro] for kk in range(1, 3)]).flatten()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...