-
炎炎设计
你可以这样做:import numpy as npindices = 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] = valuesprint(result)输出[[1. 0.] [0. 2.] [0. 3.] [4. 0.] [5. 0.] [0. 6.] [7. 0.]]请参阅numpy 中的索引。
-
叮当猫咪
您可以使用如下乘法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 thisvalue_array = np.c_[value_array * (indices_array==0), value_array * (indices_array==1)]display(value_array)
-
UYOU
您可以简单地使用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]])
-
慕桂英546537
这对你有用吗?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]]