Создайте два массива 2D numpy из списка строк

У меня есть список строк в форме:

"a, b, c, d, e ... z," 

Где первый x должен быть сохранен как строка в одном 2D-массиве, а остальная часть строки сохраняется как строка в другом 2D-массиве.

Теперь, если бы это было на C / C ++ или Java, это было бы легко, и я мог бы сделать это через несколько секунд. Но я еще не использовал 100% на python. Но дается, например, массив вроде:

 ['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6'] 

и им сказали, что они должны быть разделены на 2 столбца в первом массиве два во втором массиве, как бы я превратил этот список в следующие два массива numpy:

 [[1, 2] [2, 3] [1, 1]] 

а также:

 [[4, 5] [6, 3] [7, 6]] 

Также для моего собственного понимания, почему я не могу / не должен переходить через каждый элемент в вложенном цикле и перезаписывать их один за другим. Я не понимаю, почему, когда я пытаюсь, чтобы значения не совпадали с тем, что копируется.

Для справки код, который я пробовал:

  self.inputs=np.zeros((len(data), self.numIn)) self.outputs=np.zeros((len(data),self.numOut)) lineIndex=0 for line in data: d=line.split(',') for i in range(self.numIn): self.inputs[lineIndex][i]=d[i] print d[i], self.inputs.index() for j in range(self.numOut): self.inputs[lineIndex][j]=d[self.numIn+j] lineIndex+=1 

Я полагаю, что в python / numpy может быть проще создать один массив numpy со всеми значениями, а затем разделить на два отдельных массива. Если это будет легче помочь с этим, это будет оценено по достоинству. (Как хорошо я предлагаю возможные решения!: P)

One Solution collect form web for “Создайте два массива 2D numpy из списка строк”

Я согласен с этим последним:

Я полагаю, что в python / numpy может быть проще создать один массив numpy со всеми значениями, а затем разделить на два отдельных массива. Если это будет легче помочь с этим, это будет оценено по достоинству. (Как хорошо я предлагаю возможные решения!: P)

Вы можете удалить (удалить конечную запятую) и разделить (разбивать на список отдельных символов) каждую строку в понимании списка, чтобы получить список строк

 a = ['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6'] rows = [l.rstrip(',').split(',') for l in a] rows #[['1', ' 2', ' 4', ' 5'], ['2', ' 3', ' 6', ' 3'], ['1', ' 1', ' 7', ' 6']] 

Затем преобразуйте его в массив целых чисел:

 arr = np.array(rows, int) arr #array([[1, 2, 4, 5], # [2, 3, 6, 3], # [1, 1, 7, 6]]) 

Чтобы получить две половины:

 arr[:, :2] # first two columns #array([[1, 2], # [2, 3], # [1, 1]]) arr[:, -2:] # last two columns #array([[4, 5], # [6, 3], # [7, 6]]) 

Или, чтобы вернуть два массива:

 a, b = np.split(arr, arr.shape[1]/2, axis=1) 
  • Частоты подсчета Pandas в пределах ряда str
  • Встроенный метод генерации случайных строк фиксированной длины из заданных символов
  • Преобразование объектов Unicode с не-ASCII-символами в них в объекты строк (в Python)
  • Преобразовать символы ASCII в латинские буквы Unicode FULLWIDTH в Python?
  • Соответствие строки Python
  • Определение того, сколько раз подстрока встречается в строке в Python
  • Математические операции из строки
  • Регулярное выражение Python: разбиение на соответствие шаблону, которое является пустой строкой
  • Импорт переменных timeit.timeit в python
  • Добавление чисел в строку
  • Pandas и применить функцию для соответствия строке
  • Python - лучший язык программирования в мире.