Проблема
Я пытаюсь преобразовать огромный массив Numpy в строку.
Я написал это 2 функции:
def from_row_to_csv(row):
return ', '.join(str(i) for i in row)+'\n'
def from_rows_to_csv(rows):
return np.apply_along_axis(from_row_to_csv, 1, rows)
Я пытался использовать apply_along_axis
использовать numpy, так как я работаю только с numpy объектом, и мне не очень нравится делать np.array(list)
в результате понимания списка (легко забыть, вызывая ошибки).
Но некоторые изСтрока, получающаяся после выполнения функции from_rows_to_csv
, обрезается до конца. Они всегда заканчивают с 8130 персонажем.
В моем наборе данных есть строка 12000+, столбец 2000+ (каждая заполнена плавающей запятой)
На моих 12000 строках только 2000 не были обрезаны (с \ n наконец)
Отладка
Я попытался создать аналогичный массив, чтобы проверить, связана ли моя проблема с моей:
a = np.array([[np.random.random()*255 for i in range(2000)] for j in range(9999)])
И я попытался
st_a = from_rows_to_csv(a) // quite long
len(list(filter(lambda x: x.count('\n') == 0, st_a)))
Чтобы подсчитать, сколько строк не закончилось с \n
и результат не был 0, тогда как он должен быть 0.
Затем я попробовал понимание списка:
st_list = [from_row_to_csv(i) for i in a]
len(list(filter(lambda x: x.count('\n') == 0, st_2a)))
и результат на этот раз был 0. Я думал, что понимаю apply_along_axis
, и предполагалось применять функции к каждой "строке", когда дано axis=1
, но теперь я сомневаюсь, как работает функция.
Длячтобы быть уверенным, что это был не простой код, я попытался преобразовать полученный список в массив с нулевым значением, и он по-прежнему равнялся 0.
Я знаю Я могу использовать списочное понимание, но мне хотелось бычтобы понять, почему моя функция так себя ведет, чего я не понимаю, и является ли это общей проблемой или нет.
Я пыталсязагляните в тег numpy, но не нашли ответа