названия вашего вопроса и то, что вам нужно сделать в вашем конкретном случае, на самом деле являются две slighly разных вещей.
Чтобы создать Numpy массива без «литья» списка (или другой итерация), вы можете использовать один из нескольких методов, определенных самой NumPy, который возвращает массив:
np.empty
, np.zeros
, np.ones
, np.full
для создания массивов заданного размера с фиксированными значениями
np.random.*
(где *
может быть различными распределения, как нормальные, униформа, экспоненциальные ...), чтобы создать массивы заданного размера со случайными значениями
В общем, прочитать: Array creation routines
В вашем случае, у вас уже есть Numpy массивы (pa
и pb
), и вы не должны создавать списки для расчета новых массивов (ra
и rb
), вы можете напрямую работать с массивами numpy (это вся точка numpy: вы можете быстрее выполнять операции над массивами, которые будут выполняться по каждому элементу!).Скопировано из @Daniel's answer:
ra = (pa[1:] - pa[:-1])/pa[:-1]
rb = (pb[1:] - pb[:-1])/pb[:-1]
Это будет гораздо быстрее, чем вы текущую реализацию, а не только потому, что вам избежать преобразования списка ndarray, а потому, что Numpy массивы порядок magnuitude быстрее математических и пакетных операций чем итерация
Несколько шагов могут помочь 1) Опубликовать исходные данные 2) Ожидаемый результат. – Zero
Вы также можете использовать 'dfa ['location']. Values' в palce of' np.array (dfa ['location']) ' – Zero
Требуется задать один и тот же вопрос, но теперь я вижу, что ответа нет. – Ch3shire