Как добавить строку за строкой в ​​массиве 2d в Python? - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно добавить строку за строкой в ​​2d массив в python, используя numpy.

def read_file(file):
    # open and read file
    file = open(file, "r")
    lines = file.readlines()
    file.close()
    # row and col count
    rows = len(lines)
    cols = len(lines[0]) - 1
    maze = np.zeros((rows, cols), dtype=int)
    for line in lines:
        maze = np.append(maze, line)
    return maze

Сначала я читаю файл и получаю строки из него. Затем я создаю двумерный массив, используя количество строк и столбцов (-1 из-за '\ n' в конце). Затем я хочу добавить их в массив, но это выглядит очень странно:

['0' '0' '0' ...
'* * * ******* *** * * * * *** ******* * * ***** *** * ***** *** *\n'
'* *           *   *     *     *       *       *       *        B*\n'
'*****************************************************************\n']
['0' '0' '0' ...
'* * * ******* *** * * * * *** ******* * * ***** *** * ***** *** *\n'
'* *           *   *     *     *       *       *       *        B*\n'
'*****************************************************************\n']

Что я делаю не так? Где ошибка?

Ожидаемый результат - двумерный массив (17,65). Что-то вроде: [[0,0,0,0,0 ... 0,0], [0,0,0,0 ..., 0,0] ...] и т.д.

Я хочу создать массив из этого файла:

*****************************************************************
*A  *         *         *     *                   *             *
*** * ***** * ******* *** *** * *************** * *********** * *
*   *     * *       *       * * *     *   *     *   *       * * *
* ******* * ******* ******* * * * ***** * * ******* * ***** *** *
*       * *   *           * * *   *   * * * *   *   * *   *     *
* ***** * *** *********** * * * *** * * * * * *** *** *** ***** *
* *   * *   *     *       * *   *   *   *   *   * *     *   *   *
*** * * *** ***** ******* ******* *** ******* * * *** * * *** ***
*   *     *   * *   *   *   *   * *   *     * * *   * * *   *   *
* ***** ***** * *** * * *** * * * ***** *** * * *** * * *** *** *
*   *   *     *   * * *   *   *   *     *   * *   * * *   *   * *
* * ***** ***** * * * *** * ******* ********* * * * ***** * * * *
* * *     *     * * * * * * *       *   *     * * * *     * * * *
* * * ******* *** * * * * *** ******* * * ***** *** * ***** *** *
* *           *   *     *     *       *       *       *        B*
*****************************************************************

каждая строка в скобках [] и после новой строки начинается новая скобка.

1 Ответ

1 голос
/ 27 мая 2019

Если я вас правильно понял, вы хотите, чтобы все целые числа в массиве numpy были дополнены нулями. Вот как бы я это сделал.

# open and read file
file = open(data, "r")
lines = file.readlines()
file.close()
# row and col count
rows = len(lines)
cols = len(lines[0]) - 1
maze = np.zeros((rows, cols),dtype=str)

for index,line in enumerate(lines):
    for i in range(0,len(line)-1):
        maze[index][i]= line[i]

return maze

это даст такой вывод:

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