список строк в матрицу numpy - PullRequest
0 голосов
/ 05 мая 2020

Я новичок. Я хочу преобразовать список со строками в матрицу numpy, например, ['hello','world','this'] в [[h,e,l,l,o],[w,o,r,l,d],[t,h,i,s]]. Я ищу обобщенное решение для матрицы размером n numpy.

Ответы [ 3 ]

0 голосов
/ 05 мая 2020

пожалуйста, как этот ответ

arr = ['hello', 'world', 'this']
arr = [list(i) for i in arr]

print(arr)

вывод: [['h', 'e', ​​'l', 'l', 'o'], ['w', 'o', 'r', 'l', 'd'], ['t', 'h', 'i', 's']]

0 голосов
/ 05 мая 2020

Вы не можете получить квадратные массивы, если у вас нет одинаковой длины массива и одинакового количества символов в каждой строке. Однако вы можете получить массив m на n numpy, заполнив более мелкие строки специальным токеном.

import numpy as np


a_main = ['hello', 'world', 'this']

a = [list(a_i) for a_i in a_main]
print(a)
cols = 5
oov_token = 'Z'

for i in range(len(a)):
  if len(a[i]) < cols:
    a[i] = list( ''.join(k for k in a[i]).rjust(cols, oov_token))

print(a)

a = np.array(a, dtype = np.chararray)
print(a.shape)
print(a)
[['h', 'e', 'l', 'l', 'o'], ['w', 'o', 'r', 'l', 'd'], ['t', 'h', 'i', 's']]
[['h', 'e', 'l', 'l', 'o'], ['w', 'o', 'r', 'l', 'd'], ['Z', 't', 'h', 'i', 's']]
(3, 5)
[['h' 'e' 'l' 'l' 'o']
 ['w' 'o' 'r' 'l' 'd']
 ['Z' 't' 'h' 'i' 's']]
0 голосов
/ 05 мая 2020

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

words = ['hello','world','this'] 
letters = [ list(x) for x in words ]

А затем создать массив numpy:

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