使用Numpy pythonically过滤矩阵时返回所有列

时间:2016-01-25 17:48:20

标签: python numpy

我尝试了几种方法,无法将两列都归还。过滤有效,但只返回一列。

import numpy as np
<<<<read in some data, now get counts>>>>
unique, counts = np.unique(data[0::,2], return_counts=True)
x = np.asmatrix((unique, counts))
x = x.astype(np.int).T
print x

现在我得到以下

[[100001      1]
 [100002      1]
 [100003      4]]

我想过滤第二列&gt; 3

y = x[x[:,1] > 3,].T
print y

我现在只有第一栏

[[100003]]

为什么我没有?

[[100003     4]]

1 个答案:

答案 0 :(得分:2)

您可以考虑使用asarray代替asmatrix

x = np.asarray((unique, counts))

然后它应该像你一样工作。

当我在python 3.4 / numpy 1.10.1上运行你的代码时,如果我使用asmatrix,我得到:

>>> x = np.asmatrix((unique, counts))
>>> x = x.astype(np.int).T
>>> y = x[x[:,1] > 10,].T
/usr/local/lib/python3.4/dist-packages/numpy/matrixlib/defmatrix.py:318: 
VisibleDeprecationWarning: boolean index did not match indexed array along dimension 1;
dimension is 2 but corresponding boolean dimension is 1
  out = N.ndarray.__getitem__(self, index)