假設我們有一個矩陣:從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