假设我们有一个矩阵:从numpy的矩阵如何排除元件
mat = np.random.randn(5,5)
array([[-1.3979852 , -0.37711369, -1.99509723, -0.6151796 , -0.78780951],
[ 0.12491113, 0.90526669, -0.18217331, 1.1252506 , -0.31782889],
[-3.5933008 , -0.17981343, 0.91469733, -0.59719805, 0.12728085],
[ 0.6906646 , 0.2316733 , -0.2804641 , 1.39864598, -0.09113139],
[-0.38012856, -1.7230821 , -0.5779237 , 0.30610451, -1.30015299]])
还假设我们有一个索引数组:
idx = np.array([0,4,3,1,3])
虽然我们可以使用提取从矩阵元素下面:
mat[idx, range(len(idx))]
array([-1.3979852 , -1.7230821 , -0.2804641 , 1.1252506 , -0.09113139])
我想知道的是我们如何使用索引从矩阵中排除元素,即如何获得t他下面的结果:
array([[0.12491113 , -0.37711369, -1.99509723, -0.6151796 , -0.78780951],
[-3.5933008 , 0.90526669, -0.18217331, -0.59719805, -0.31782889],
[0.6906646 , -0.17981343, 0.91469733, 1.39864598, 0.12728085],
[-0.38012856, 0.2316733 , -0.5779237 , 0.30610451, -1.30015299]])
认为这将是因为这样做mat[-idx, range(len(idx))]
一样简单,但不起作用。我也试过np.delete()
,但这似乎也没有做到这一点。任何不需要循环或列表解析的解决方案?希望有任何见解。谢谢。
编辑:数据必须在相同的列后处理。
好像当OPS是在扁平的数据执行不保留数据的列完整性。 – user97979717
我正在寻找一种方法来放大,删除元素下的所有东西。对困惑感到抱歉。 – user97979717
通过'F'重新排序和转置,'np.delete'可以将值保存在列中(与我例子中的行相反)。 – hpaulj