我有兩個不同行數的特徵矩陣。 假設矩陣A具有比矩陣B更多的行。矩陣的列包括ID1,ID2,Time_slice,特徵值。由於對於某些Time_slice,B中沒有任何特徵值,B中的行數少於A.我需要查找B中哪些行被遺漏。然後將行添加到B中,使用相關的ID1,ID2值以及零特徵。在Python中比較兩個矩陣並填充錯過的行
ID1 ID2 Time_slice Feature
A= array([[ 100, 1., 0., 1.5],
[ 100, 1., 1., 3.7],
[ 100, 2., 0., 1.2],
[ 100, 2., 1., 1.8],
[ 100, 2., 2., 2.9],
[ 101, 3., 0., 1.5],
[ 101, 3., 1., 3.7],
[ 101, 4., 0., 1.2],
[ 101, 4., 1., 1.8],
[ 101, 4., 2., 2.9]])
B= array([[ 100, 1., 0., 1.25],
[ 100, 1., 1., 3.37],
[ 100, 2., 0., 1.42],
[ 100, 2., 1., 1.68]])
Output should be as follow:
[[ 100, 1., 0., 1.25],
[ 100, 1., 1., 3.37],
[ 100, 2., 0., 1.42],
[ 100, 2., 1., 1.68],
[ 100, 2., 2., 0 ],
[ 101, 3., 0., 0],
[ 101, 3., 1., 0],
[ 101, 4., 0., 0],
[ 101, 4., 1., 0],
[ 101, 4., 2., 0]])
這將是更好的追加,或者將新行插入一個列表('listB'或一個新的副本),並在最後重建數組。反覆使用'np.append'很慢。 – hpaulj
我在代碼中做了一些更改以比較前三列,並且我嘗試了與@hpaulj所說的優化速度相同的方法。謝謝。 – YNr
@hpaulj,是的重複使用np.append很慢。在列表中工作並最終將其完成到數組對於性能來說更好。當我快速回答問題時,我並沒有考慮perf。謝謝。 – triiiiista