img {
position: absolute;
clip: rect(0px,60px,200px,0px);
}
Во-первых, как правило, лучше размещать примеры вашего кода в своем вопросе, где ваша проблема (например, часть, в которой вы выбираете радиусы, которые вы хотите сохранить), а не ссылки на весь ваш сценарий :)
[ 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 для выбора индексов радиусов, которые соответствуют ваши критерии.
Это было довольно много, надеюсь, это поможет.