我有大量 2 列的行。
從每一行中,我想從第一列或第二列中選擇一個值(具有加權概率)。
import numpy as np
values = np.array(
[[0.41, 0.31],
[0.73, 0.15],
[0.44, 0.30],
[0.67, 0.18],
])
我想使用 0 和 1 之間的隨機選擇作為這樣的索引,第一列的權重為 0.6,第二列的權重為 0.4:
probs_chosen = np.random.choice([0,1], size=4, replace=True, p=[0.6, 0.4])
print(probs_chosen)
array([0, 0, 1, 0])
但是我如何使用這個索引從第 1 行中選擇第一個值,從第 2 行中選擇第一個值等。
或者解決我的問題的任何其他方法也可以。熊貓解決方案也可以。
在這種情況下的預期結果:
[0.41, 0.73, 0.30, 0.67]
uj5u.com熱心網友回復:
您可以使用 numpy高級索引:
row_idx = np.arange(values.shape[0])
col_idx = np.random.choice([0,1], size=4, replace=True, p=[0.6, 0.4])
out = values[row_idx, col_idx]
輸出:
array([0.41, 0.73, 0.3 , 0.67])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414812.html
標籤:
