将二维 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
不过,考虑到多个循环,我高度怀疑这是最好的方法。
我想将整数数组转换为 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
不过,考虑到多个循环,我高度怀疑这是最好的方法。