Создайте два массива 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) 
  • Форматирование строк без индекса в python2.6
  • Преобразование шестнадцатеричной строки в int в Python
  • Добавление строк из объекта json в состояние вместе эффективно?
  • cutdown uuid далее, чтобы сделать короткую строку
  • Как я могу разбить строку математических выражений в python?
  • Как эффективно фильтровать строку в длинном списке слов в Python / Django?
  • Строковые подстановки с использованием шаблонов в Python
  • Распечатайте полную строку кадра данных pandas
  • Python - лучший язык программирования в мире.