Извлечение определенных столбцов в массиве numpy
Это простой вопрос, но скажите, что у меня есть матрица MxN. Все, что я хочу сделать, это извлечь определенные столбцы и сохранить их в другом массиве numpy, но я получаю недопустимые синтаксические ошибки.
Вот код:
extractedData = data[[:,1],[:,9]].
Кажется, что выше строки должно быть достаточно, но я думаю, что нет. Я огляделся, но не смог найти ничего синтаксически мудрого относительно этого конкретного сценария.
8 ответов:
Я предполагаю, что вы хотели столбцы
1и9? Этоdata[:, [1, 9]]или с именами:
data[:, ['Column Name1','Column Name2']]вы можете получить имена от
data.dtype.names...
предполагая, что вы хотите получить столбцы 1 и 9 с этим фрагментом кода, он должен быть:
extractedData = data[:,[1,9]]
Если вы хотите извлечь только некоторые столбцы:
idx_IN_columns = [1, 9] extractedData = data[:,idx_IN_columns]Если вы хотите исключить определенные столбцы:
idx_OUT_columns = [1, 9] idx_IN_columns = [i for i in xrange(np.shape(data)[1]) if i not in idx_OUT_columns] extractedData = data[:,idx_IN_columns]
Я хотел бы отметить, что если количество столбцов, которые вы хотите извлечь, равно 1 результирующей матрице не было бы матрицы Mx1 как и следовало ожидать, но вместо этого массив, содержащий элементы столбца, который вы извлекли.
преобразовать его в матрицу изменить форму(M, 1) метод должен использоваться в результирующем массиве.
еще одна вещь, на которую вы должны обратить внимание при выборе столбцов из массива N-D, используя такой список:
data[:,:,[1,9]]Если вы удаляете измерение (например, выбрав только одну строку),результирующий массив будет (по какой-то причине) перестановкой. Итак:
print data.shape # gives [10,20,30] selection = data[1,:,[1,9]] print selection.shape # gives [2,20] instead of [20,2]!!
всего:
>>> m = np.matrix(np.random.random((5, 5))) >>> m matrix([[0.91074101, 0.65999332, 0.69774588, 0.007355 , 0.33025395], [0.11078742, 0.67463754, 0.43158254, 0.95367876, 0.85926405], [0.98665185, 0.86431513, 0.12153138, 0.73006437, 0.13404811], [0.24602225, 0.66139215, 0.08400288, 0.56769924, 0.47974697], [0.25345299, 0.76385882, 0.11002419, 0.2509888 , 0.06312359]]) >>> m[:,[1, 2]] matrix([[0.65999332, 0.69774588], [0.67463754, 0.43158254], [0.86431513, 0.12153138], [0.66139215, 0.08400288], [0.76385882, 0.11002419]])столбцы не должны быть в порядке:
>>> m[:,[2, 1, 3]] matrix([[0.69774588, 0.65999332, 0.007355 ], [0.43158254, 0.67463754, 0.95367876], [0.12153138, 0.86431513, 0.73006437], [0.08400288, 0.66139215, 0.56769924], [0.11002419, 0.76385882, 0.2509888 ]])
Comments