我如何将值和掩码的数组组合到一个矩阵中,该矩阵仅包含一次数组中的每个值,但是仅在掩码为非零的地方?您可能会说我想用数组中的值填充mask-matrix。
我实际上并不关心结果中原始元素的顺序。
mask = [[0, 1, 0], [1, 0, 1], [0, 1, 0]]
values = [1, 2, 3, 4]
result = some_magical_operation(mask, values)
# output: result = [[0, 1, 0], [2, 0, 3], [0, 4, 0]]
# alternative output: result2 = [[0, 2, 0], [1, 0, 3], [0, 4, 0]]
# alternative output: result3 = [[0, 4, 0], [3, 0, 2], [0, 1, 0]]
注意:我的实际矩阵的密度明显小于此值。
这是我尝试过的东西,
mask = [[0, 1, 0], [1, 0, 1], [0, 1, 0]]
val = [1, 2, 3, 4]
result=list()
k=0
for i in mask:
for j in range(0,len(i)):
if i[j]!=0:
i[j]=val[k]
k+=1
result.append(i)
print(result)
输出:
[[0, 1, 0], [2, 0, 3], [0, 4, 0]]
此代码也需要一些小的修改: