将二维 Numpy 整数数组扩展为二进制但并行

Expand 2-D Numpy integer Array as binary but in parallel

我想将整数数组转换为 0 或 1,如果另一个数组具有较大的值,则用 0 填充。

示例:

ex1 = np.array([[0],[3]])
=> array([[0,0,0],[1,1,1]])


ex2 = np.array([[2,1],[0,0]])
=> array([[1,1,1],[0,0,0]])


ex3 = np.array([ [2,1,2],[3,1,1] ])
=> array([[1,1,0,1,1,1]
          [1,1,1,1,1,0]])

我该如何实现?是不是也可以扩充N维数组?

想出了这个方法:

def expand_multi_bin(a):
    # Create result array
    n = np.max(a, axis=0).sum()
    d = a.shape[0]
    newa = np.zeros(d*n).reshape(d,n)

    row=0
    for x in np.nditer(a, flags=['external_loop'], order='F'):
        # Iterate each column
        for idx,c in enumerate(np.nditer(x)):
            # Store it to the result array
            newa[idx,row:row+c] = np.ones(c)
        row += np.max(x) 

    return newa

不过,考虑到多个循环,我高度怀疑这是最好的方法。