Matrix 用布尔数组选择多维矩阵的一部分

Matrix 用布尔数组选择多维矩阵的一部分,matrix,multidimensional-array,julia,Matrix,Multidimensional Array,Julia,我想通过另一个带有布尔项的矩阵来选择多维数组的一部分 因此,如果单元格为真,我想在单元格中输入数字。如果为false,则应为0 例如: M=randInt64[1:5],3,4,2 3x4x2数组{Int64,3}: [:,:,1]= 5 5 1 2 1234 4 2 5 4 [:,:,2]= 2 4 1 1 3531 1 1 4 5 B= 3x4位数组{2}: 假假假假 假真假假 假假真假 结果应该是: Mred= [:,:,1]= 0 0 0 0 0200 050 [:,:,2]= 0 0

我想通过另一个带有布尔项的矩阵来选择多维数组的一部分

因此,如果单元格为真,我想在单元格中输入数字。如果为false,则应为0

例如:

M=randInt64[1:5],3,4,2 3x4x2数组{Int64,3}:

[:,:,1]=

5 5 1 2

1234

4 2 5 4

[:,:,2]=

2 4 1 1

3531

1 1 4 5

B=

3x4位数组{2}:

假假假假

假真假假

假假真假

结果应该是:

Mred=

[:,:,1]=

0 0 0 0

0200

050

[:,:,2]=

0 0 0 0

0500

050

我试过这样的东西:

Mred=M[B,:]

Mred=M[B,1,B,2,2]


还有很多其他的东西,但是缺少了一些东西,而且维度似乎很高。

您可以使用元素乘法:

M.*B

您可以使用元素乘法:

M.*B

非常感谢。如果我遵循你的建议:M[1,2].*B,那么我省略了示例的第三维。所以你的解决方案行不通。@Hainmueck但是,如果你使用Felipe的建议,而不是在你的评论中使用M[1,2].*B,那么它会产生你在问题中要求的结果。哦,对不起,我的错。我不知怎么搞砸了,它只是按照我在评论中写的方式起作用。现在它成功了,我只需要弄清楚为什么它不适用于四维。原始尺寸是M:2x2500X3X1000和B:[2500x3]谢谢。如果我遵循你的建议:M[1,2].*B,那么我省略了示例的第三维。所以你的解决方案行不通。@Hainmueck但是,如果你使用Felipe的建议,而不是在你的评论中使用M[1,2].*B,那么它会产生你在问题中要求的结果。哦,对不起,我的错。我不知怎么搞砸了,它只是按照我在评论中写的方式起作用。现在它成功了,我只需要弄清楚为什么它不适用于四维。原始尺寸是M:2x2500X3X1000和B:[2500x3]