Python 是否有一种“numpy”方法可以将一维numpy数组扩展到二维,并且输出值依赖于原始值?

Python 是否有一种“numpy”方法可以将一维numpy数组扩展到二维,并且输出值依赖于原始值?,python,numpy,Python,Numpy,我有一个数字列表,称为这个列表,长度为l,最大为N。所需的输出是一个形状为[l,N]的numpy数组,其中每一行都有list[row_index]1s,其余为0 我已经用for循环完成了,但是我尽量不使用非顺序问题的循环,因为numpy通常有一种很酷的处理方法 例如: Input: N=5 list = [3, 2, 4, 2, 1, 0] Desired

我有一个数字列表,称为这个列表,长度为l,最大为N。所需的输出是一个形状为[l,N]的numpy数组,其中每一行都有list[row_index]1s,其余为0

我已经用for循环完成了,但是我尽量不使用非顺序问题的循环,因为numpy通常有一种很酷的处理方法

例如:

Input: 
    N=5
    list = [3,
            2,
            4,
            2,
            1,
            0]

Desired Output:
    [[1, 1, 1, 0, 0],
     [1, 1, 0, 0, 0],
     [1, 1, 1, 1, 0],
     [1, 1, 0, 0, 0],
     [1, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]]
我尝试过的方式:

for i in range(len(list)):
    list[i] = np.concatenate(np.ones(list[i]), np.zeros(N-list(i)))
我得到了正确的结果,只是觉得还有一种更优雅的“裸体”方式。有什么想法吗?

这将起作用:

l = [3, 2, 4, 2, 1, 0]
N = 5

np.where(np.arange(N) >= np.array(l)[np.newaxis].T, 0, 1)
这将创建一个数组,该数组在第一维中包含一系列数字,在第二维中创建另一个基于l的数组。大于或等于l中对应元素的每个元素都设置为0,小于的每个元素都设置为1

这意味着,例如,对于l3中的第一个元素,结果集中将有3个元素为1

输出:

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

这种表示通常称为温度计编码。请参考此SO线程上的解决方案:np.c_[list]>np.r_[:N]。是否查看“u1”?