Answers:
我想指出的一件事是,如果要提取的列数为1,则生成的矩阵将不是您期望的Mx1矩阵,而是包含所提取列元素的数组。
要将其转换为矩阵,应在结果数组上使用reshape(M,1)方法。
data[:, 8:9]
。这将占用八列,但不会删除多余的尺寸。
只是:
>>> 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 ]])
使用类似这样的列表从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]!!
您可以使用 :
extracted_data = data.ix[:,['Column1','Column2']]
我认为这里的解决方案不再适用于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
您还可以使用extractedData = data([:,1],[:, 9])