Python 将一维numpy数组的值转换为二维numpy数组中的列号

Python 将一维numpy数组的值转换为二维numpy数组中的列号,python,arrays,numpy,Python,Arrays,Numpy,我需要以下逻辑: 输出数组的行数与输出数组的行数相同 输入数组中的元素 输入数组的值表示输出数组的列数(列数等于输入数组中的最大数) 如果输入数组包含特定的组合,则输出数组的值应为1,否则为0 例如,我想转换一个numpy数组,比如 [2, 1, 1, 0] 放入一个如下所示的数组中 [[0, 0, 1], [0, 1, 0], [0, 1, 0], [1, 0, 0]] 我唯一能想到的就是用for循环填充一个空数组。还有什么“numpy-ish”方法吗?使用以下方法: befor

我需要以下逻辑:

  • 输出数组的行数与输出数组的行数相同 输入数组中的元素
  • 输入数组的值表示输出数组的列数(列数等于输入数组中的最大数)
  • 如果输入数组包含特定的组合,则输出数组的值应为1,否则为0
例如,我想转换一个numpy数组,比如

[2, 1, 1, 0]
放入一个如下所示的数组中

[[0, 0, 1],
 [0, 1, 0],
 [0, 1, 0],
 [1, 0, 0]]
我唯一能想到的就是用for循环填充一个空数组。还有什么“numpy-ish”方法吗?

使用以下方法:

before = [2, 1, 1, 0]

n_rows = len(before)
n_columns = max(before) + 1

output = np.zeros((n_rows, n_columns))

#loop constructor
for idx,i in enumerate(before): output[idx,i] = 1

array([[0., 0., 1.],
       [0., 1., 0.],
       [0., 1., 0.],
       [1., 0., 0.]])

欢迎来到StackOverflow,而且。。。在这里申请。特别是,描述从给定输入生成给定输出的逻辑。如何选择列数?你说的不是clear@makis我编辑使它更清晰明白了是的。看到我的回答了吗?你说的“特定组合”是什么意思?您的示例看起来就像一个热编码。如果是这样,那么这个答案是有效的:例如,如果输入数组中的第一个元素等于2,那么输出数组应该是第三列第一行的1(列索引2)。明白了吗?请参阅我更新的答案