4 回答

TA貢獻1808條經(jīng)驗 獲得超4個贊
你可以這樣做:
import numpy as np
indices = np.array([0, 1, 1, 0, 0, 1, 0])
values = np.array([1, 2, 3, 4, 5, 6, 7])
result = np.zeros((len(indices), 2))
result[np.arange(len(indices)), indices] = values
print(result)
輸出
[[1. 0.]
[0. 2.]
[0. 3.]
[4. 0.]
[5. 0.]
[0. 6.]
[7. 0.]]
請參閱numpy 中的索引。

TA貢獻1776條經(jīng)驗 獲得超12個贊
您可以使用如下乘法
indices_array = np.array([0, 1, 1, 0, 0, 1, 0])
value_array = np.array([1, 2, 3, 4, 5, 6, 7])
## you can simply do this
value_array = np.c_[value_array * (indices_array==0), value_array * (indices_array==1)]
display(value_array)

TA貢獻1878條經(jīng)驗 獲得超4個贊
您可以簡單地使用column_stack和乘以 numpy 廣播
i_arr = np.array([0, 1, 1, 0, 0, 1, 0])
v_arr = np.array([1, 2, 3, 4, 5, 6, 7])
np.column_stack((1-i_arr, i_arr)) * v_arr[:,None]
Out[61]:
array([[1, 0],
[0, 2],
[0, 3],
[4, 0],
[5, 0],
[0, 6],
[7, 0]])

TA貢獻1848條經(jīng)驗 獲得超10個贊
這對你有用嗎?
import numpy as np
a = np.array([0, 1, 1, 0, 0, 1, 0])
b = np.array([1, 2, 3, 4, 5, 6, 7])
print(np.array([a*b,(1-a)*b]))
[[0 2 3 0 0 6 0]
[1 0 0 4 5 0 7]]
添加回答
舉報