Ответ 1
Я полагаю, вы хотели столбцы 1
и 9
? Это
data[:, [1, 9]]
Или с именами:
data[:, ['Column Name1','Column Name2']]
Вы можете получить имена из data.dtype.names
...
Это простой вопрос, но скажем, что у меня есть матрица MxN. Все, что я хочу сделать, это извлечь определенные столбцы и сохранить их в другом массиве numpy, но я получаю недопустимые синтаксические ошибки. Вот код:
extractedData = data[[:,1],[:,9]].
Кажется, что приведенная выше строка должна быть достаточной, но я думаю, что нет. Я огляделся, но не смог найти ничего синтаксического мудрая относительно этого конкретного сценария.
Я полагаю, вы хотели столбцы 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]
Просто:
>>> 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 ]])
Я хотел бы отметить одну вещь: если количество столбцов, которое вы хотите извлечь, равно 1, полученная матрица будет не матрицей Mx1, как вы могли бы ожидать, а массивом, содержащим элементы извлеченного столбца.
Чтобы преобразовать его в Matrix, в результирующем массиве должен использоваться метод reshape (M, 1).
Ты можешь использовать:
extracted_data = data.ix[:,['Column1','Column2']]
Еще одна вещь, на которую следует обратить внимание при выборе столбцов из массива ND с помощью такого списка:
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]!!
Я думаю, что решение здесь не работает с обновлением версии Python, один из способов сделать это с помощью новой функции Python:
extracted_data = data[['Column Name1','Column Name2']].to_numpy()
который дает вам желаемый результат.
Документацию вы можете найти здесь: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy
вы также можете использовать extractData = data ([:, 1], [:, 9])