我如何将值数组和掩码组合成矩阵?

问题描述 投票:0回答:1

我如何将值和掩码的数组组合到一个矩阵中,该矩阵仅包含一次数组中的每个值,但是仅在掩码为非零的地方?您可能会说我想用数组中的值填充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]]

注意:我的实际矩阵的密度明显小于此值。

python numpy matrix scipy sparse-matrix
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]]

此代码也需要一些小的修改:

  1. 检查val [k]是否没有用完索引
© www.soinside.com 2019 - 2024. All rights reserved.