公告:1)网站程序升级:Q2A升级到1.8.6,Wordpress升级到5.7.2
2)修复了头像加载慢与提交问题反应慢等问题
2021-06-16

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+1 投票
94 浏览

假设我有两个矩阵a1,a2

a1 = RandomReal[10, {3, 3}];
MatrixForm[a1]
a2 = RandomInteger[1, {3, 3}];
a2 // MatrixForm
我想在提取a1中的值,只有相同位置上a2的值为1,才提取对应位置上a1的值,请问该怎么做?
用户: 落雨流觞 (1.0k 分)

2 个回答

+1 投票

先把a1中不为1的置0,再对应数乘吧。得到的矩阵就是a1经a2过滤后的矩阵了。

a3 = Map[Replace[_?(# != 1 &) -> 0], a2, Infinity]
a1*a3;
% // MatrixForm

只知道思路,代码不太会,大致是这样。

用户: osu875386 (31 分)
——请问如何更改自己的用户名、头像等信息呢?我是QQ登录的。
0 投票

你是不是找:Pick

a1 = RandomReal[10, {3, 3}];
a2 = RandomInteger[1, {3, 3}];
Pick[a1, a2, 1]

 

用户: xzczd (2.2k 分)
...