从NumPy 2D数组中的内部维度中删除最小值

时间:2016-01-15 03:33:35

标签: arrays python-3.x numpy vectorization

您好我是python和vectorization的新手。

假设您有一个像这样的5x3 numpy数组:

array([[ -1.262,  -4.034,   2.422],
       [ 13.849,  14.377,   4.951],
       [  3.203,  10.209,  -2.865],
       [  3.618,  -3.51 ,  -7.059],
       [ -0.098,  -5.012,   6.389]])

并且你希望最终得到一个新的5x2矩阵,从每个内部维度删除最小值,如下所示:

array([[ -1.262,   2.422],
       [ 13.849,  14.377],
       [  3.203,  10.209],
       [  3.618,  -3.51 ],
       [ -0.098,   6.389]])

实现这一目标的最佳方法是什么?我想它是矢量化的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这是一个相对简单的功能,但它可能不会出现在numpy中;大熊猫可能更容易做到这一点。

使用numpy,这是一种方法:

scrapy crawl Trousers_spider

布尔索引的步骤是"反转"从In [56]: a = np.array([[ -1.262, -4.034, 2.422], [ 13.849, 14.377, 4.951], [ 3.203, 10.209, -2.865], [ 3.618, -3.51 , -7.059], [ -0.098, -5.012, 6.389]]) In [57]: m = np.argmin(a, axis=1) In [58]: indices = np.ones(shape=a.shape, dtype=bool) In [59]: indices[np.arange(5), m] = False In [60]: a[indices].reshape((-1, a.shape[1]-1)) Out[60]: array([[ -1.262, 2.422], [ 13.849, 14.377], [ 3.203, 10.209], [ 3.618, -3.51 ], [ -0.098, 6.389]]) 返回的索引,因为后者返回整数索引,而不是布尔索引。