4 回答

TA贡献1808条经验 获得超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条经验 获得超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条经验 获得超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条经验 获得超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]]
添加回答
举报