Почему пустая вырезанная строка с apply_along_axis, а понимание списка не - PullRequest
0 голосов
/ 07 ноября 2019

Проблема

Я пытаюсь преобразовать огромный массив 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, но не нашли ответа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...