У меня есть программа, которая должна превращать много больших одномерных массивов numpy поплавков в строки с разделителями. Я нахожу эту операцию довольно медленной относительно математических операций в моей программе, и мне интересно, есть ли способ ускорить ее. Например, рассмотрим следующий цикл, который принимает 100 000 случайных чисел в массиве numpy и объединяет каждый массив в строку с разделителями-запятыми.
import numpy as np
x = np.random.randn(100000)
for i in range(100):
",".join(map(str, x))
Этот цикл занимает около 20 секунд (полный, а не каждый цикл). Напротив, рассмотрим, что 100 циклов чего-то типа элементарного умножения (x * x) будут занимать не более 1/10 секунды для завершения. Очевидно, что операция объединения строк создает узкое место в производительности; в моем фактическом приложении он будет доминировать в общей продолжительности выполнения. Это заставляет меня задуматься, есть ли более быстрый способ, чем ",". Join (map (str, x))? Поскольку map() - это то место, где происходит почти все время обработки, это сводится к вопросу о том, будет ли быстрее преобразовывать очень большое количество чисел в строки.