2016-02-02 3 views
1

У меня есть матрица b, и мне нужно поместить некоторые из ее столбцов (например, столбцы 2,4) в другую пустую матрицу a. На основании следующего кода:Объединение столбца в матрицу (numpy)

import numpy as np 
a = np.empty([2, 1]) 
b = np.array([[1, 8, 6, 3], [3, 0, 7, 4]]) 

Так что я хочу к быть, как это

[[8,3] [0,4]]

Я попытался np.concatenate:

np.concatenate((a,b[:,1]),axis=0) 

но получил эту ошибку:

ValueError: all the input arrays must have same number of dimensions

Может ли кто-нибудь объяснить мне, как мне исправить эту ошибку? или есть другой способ, а не np.concatenate, который я могу использовать?

Спасибо

+0

Что вы хотите - это массив '(2,2)', но вы начинаете 'a' с' (2,1) '. Вы посмотрели на 'b [:, 1]'? Я ожидаю, что это '[8,0]', всего 2 числа, которые вы хотите. Забудьте о 'concatenate' в это время и сосредоточьтесь на индексировании' b' правильно. – hpaulj

ответ

2

Я думаю, что вы хотите просто

cols = [1, 3] 
a = b[:, cols] 

Вам не нужно инициализировать пустую матрицу a для этой цели, и вам не нужно сцепить.

Напоминание: python использует индексирование на основе 0. Согласно вашему желаемому примеру решения, вы, вероятно, ищете столбцы 1, 3, а не 2, 4.

В случае, если вы на самом деле сделать хотите конкатенации (например, если a не пусто, но вы хотели бы добавить несколько столбцов в ней, вы можете сделать это, как вы предложили, но вместе axis=1. Будьте осторожны, хотя, как на данный момент вы конкатенация столбцов в пустой матрицу с не инициализированы записями

1

использование делает из copy() функции в Numpy модуля для копирования матриц
Вот решение:..

>>> import numpy as np 
>>> b = np.array([[1, 8, 6, 3], [3, 0, 7, 4]]) 
>>> a = b[0::,1::2].copy() 
>>> print a 
[[8 3] 
[0 4]] 

Вещи становятся более сложными при индексировании многомерных массивов, особенно с многомерными индексными массивами.
Пройдите через documentation для понимания индексирования в многомерных массивах и here является индексация документации массива с фрагментами в модулы Numpy.

Смежные вопросы