labels_1 = np.array([[-100,32,34,25,2,35,2,5,-100,-100],[-100,35,2,5,-100,-100]])
pred_1 = np.array([[8,32,3,25,2,3,2,5,8],[8,3,2,5,8]])
我想去掉labels_1 中的-100s 并從pred_1 中獲取相應匹配的索引元素。
例如,輸出應該是
labels_1 = np.array([[32,34,25,2,35,2,5],[35,2,5]])
pred_1 = np.array([[32,3,25,2,3,2,5],[3,2,5]])
我嘗試使用,np.where(labels_1!=-100)但它僅適用于具有相同長度串列的陣列,但正如您所見,labels_1 中的陣列具有不同的長度,這是一個問題。
uj5u.com熱心網友回復:
我相信你正在尋找的是:
pred_1 = [[b for a, b in zip(la, lb) if a != -100] for la, lb in zip(labels_1, pred_1)]
labels_1 = [[a for a in la if a != -100] for la in labels_1]
結果:
>>> labels_1
[[32, 34, 25, 2, 35, 2, 5], [35, 2, 5]]
>>> pred_1
[[32, 3, 25, 2, 3, 2, 5], [3, 2, 5]]
正如評論中所說,您不能在numpy. 如果你嘗試,你應該看到一個響亮的VisibleDeprecationWarning。您可以查看掩碼陣列,如果它更適合您的需要,但否則您最好使用簡單串列(在本例中為串列)。
uj5u.com熱心網友回復:
通過在 numpy 陣列中使用大小不均勻的串列,您會破壞 numpy 陣列的目的,因此您可以為此使用 numpy 解決方案。
不過,您可以使用串列理解來完成此任務:
labels_1 = np.array([[x for x in y if x != -100] for y in labels_1])
pred_1 = np.array([[x for x in y if x != -100] for y in pred_1])
輸出:
>>> labels_1
array([list([32, 34, 25, 2, 35, 2, 5]), list([35, 2, 5])], dtype=object)
>>> pred_1
array([list([8, 32, 3, 25, 2, 3, 2, 5, 8]), list([8, 3, 2, 5, 8])], dtype=object)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390684.html
上一篇:交換可觀察陣列中的元素
