Записать длинный список в одну строку - PullRequest
3 голосов
/ 05 мая 2020

В Python следующий код:

data = [np.array([[1,2,3],[4,5,6]]),[7]]
with open('A:\\examplefile.txt', 'w', newline='') as file:
      file.write(str([item for item in data]))

записывает вложенный список в несколько строк в файле, таким образом:

[array([[1, 2, 3],
       [4, 5, 6]]), [7]]

Как я могу записать весь список на в строке в файле? например:

[array([[1,2,3],[4,5,6]]),[7]]

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Numpy форматирует вывод ndarray с помощью '\ n' и пробелов, чтобы его можно было читать в форме матрицы. Так что замена '\ n' и пробела поможет.

Попробуйте это,

data = [np.array([[1,2,3],[4,5,6]]),[7]]
with open('A:\\examplefile.txt', 'w', newline='') as file:
    file.write(str(data).replace('\n','').replace(' ',''))
1 голос
/ 05 мая 2020

Не уверен, что именно вы ищете, но способ печати / записи массивов по умолчанию - это новая строка для каждого элемента. Один из способов обойти это - проверить, является ли элемент в списке массивом numpy, и преобразовать его в такой список.

import numpy as np
data = [np.array([[1,2,3],[4,5,6]]),[7]]
with open('examplefile.txt', 'w') as file:
    a = []
    for item in data:
        if type(item) == np.ndarray:
            item = item.tolist()
        a.append(item)
    file.write(str(a))

Вот еще одна альтернатива, если вы хотите изменить поведение numpy по умолчанию

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