Сортировка большого количества галактик в сферы определенного радиуса

img {
    position: absolute;
    clip: rect(0px,60px,200px,0px);
} 
-1
задан Humza Qureshi 24 February 2019 в 01:04
поделиться

1 ответ

Во-первых, как правило, лучше размещать примеры вашего кода в своем вопросе, где ваша проблема (например, часть, в которой вы выбираете радиусы, которые вы хотите сохранить), а не ссылки на весь ваш сценарий :)

[ 1122] Во-вторых, numpy массивы отлично подходят для научного программирования! Они позволяют вам легко хранить данные и выполнять матричные операции над этими данными без необходимости циклически просматривать собственные списки Python. Если вы знаете MATLAB, они в основном позволяют вам делать большую часть. Больше информации можно найти здесь здесь и здесь . pandas Фреймы данных также хороши в использовании.

На ваш код. В конце вашей функции read_data вы можете объединить некоторые из этих операторов coordinates и, возможно, не нужно добавлять tolist(), потому что это numpy.array (который быстрее и использует меньше памяти, см. Ссылки выше).

В вашей функции get_bubbles я не думаю, что вам нужно делать копии данных. Копии также будут занимать память. Самая большая проблема, которую я вижу здесь, - это использование переменной i дважды в ваших циклах. Это плохо, потому что i заменяется во втором цикле. Например,

for i in [1, 2, 3, 4]:

for i in np.array([5, 6, 7, 8]):
    print(i)

печатать 5, 6, 7, 8 четыре раза. Это также плохо, потому что мы не можем сказать, какой i делает то, что вы хотите (отсутствие комментариев тоже не помогает;)). Замените переменную i во втором цикле другой переменной, например j.

Вот два варианта сделать списки быстрее: списки и инициализация numpy.arrays. Вы можете прочитать о списках здесь . Примером инициализации numpy.arrays является

new_data = np.zeros(len(data))

for i in range(len(data)):
     new_data[i] = data[i]

Наконец, вы можете создать отдельный массив для радиусов и изучить использование numpy.where для выбора индексов радиусов, которые соответствуют ваши критерии.

Это было довольно много, надеюсь, это поможет.

0
ответ дан HS-nebula 24 February 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: