Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MATLAB中多维数组逻辑运算的Numpy等价_Python_Matlab_Numpy_Multidimensional Array - Fatal编程技术网

Python MATLAB中多维数组逻辑运算的Numpy等价

Python MATLAB中多维数组逻辑运算的Numpy等价,python,matlab,numpy,multidimensional-array,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); e

我在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];

语法会有点混乱,但您可以使用函数来实现这一点。

对。我认为这个函数会起作用。我一直在为语法而挣扎。为什么不
&
|
?@CrisLuengo我认为它对多维np数组不起作用。我得到一个ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()@MGoforth:它说这应该有效。@MGoforth:
a=np.random.rand(10,12,6);b=(a>0.4)和(a可能是欢迎访问该网站的副本。请确保提供(减少)样本数据和目标输出。这将使帮助更容易。我真的不清楚您希望
D
在本文结尾处是什么。您能提供一些示例数据(例如,a、b和C,2x2x2和a、b、C和D,3x1)吗根据您希望/期望的输出?@aganders3很难给出一个示例,但我将尝试解释。d是一个已经填充了数据的列向量。a、b和c也是填充了大小相等的列向量。Meshgrid用于将a、b和c构建成一个LxMxN网格,其中包含a、b和c中唯一的值。现在我可以nt使用d使用布尔表达式用适当的值填充LxMxN d。