在MATLAB中对多维数组进行逻辑运算的数字运算

时间:2019-03-21 17:02:46

标签: python matlab numpy multidimensional-array

我在MATLAB中编码了以下逻辑运算,其中[A,B,C和D]均为5x3x16双精度,而[a,b,c和d]均为240x1双精度。我正在尝试使用numpy在python中实现相同的逻辑操作。

D = zeros(size(A)); 
for i = 1:numel(D)
    flag = ...
        (a == A(i)) & ...
        (b == B(i)) & ...
        (c == C(i));
    D(i) = d(flag);
end

d是已填充数据的列向量。 a,b和c也是大小相等的填充列向量。 Meshgrid用于将A,B和C构造为a,b和c内唯一值的LxMxN网格。现在,我想使用d通过布尔表达式使用适当的值填充LxMxN D。

我尝试过:

D= np.zeros(np.shape(N))
for i in range(len(D)):

    for j in range(len(D[0])):

        for k in range(len(D[0][0])):    
            flag = np.logical_and(                                  
                (a == A[i][j][k]),              
                (b == B[i][j][k]),        
                (c == C[i][j][k])
                )
            D[i][j][k] = d[flag];

1 个答案:

答案 0 :(得分:1)

语法会有点混乱,但是您可以使用np.logical_*函数来做到这一点。