python - 如何将每个 numpy 列中的所有非零元素分配给大小与列数相同的数组中的值?
问题描述
所以这有点拗口。但这是我想要做的:
b = np.array([7,8,2,3])
a = np.array([[1, 1, 0, 1],
[0, 0, 1, 1],
[0, 1, 1, 0]])
*** The Magic Happens ***
array([[7, 8, 0, 3],
[0, 0, 2, 3],
[0, 8, 2, 0]])
解决方案
我几乎不认为有一个更快/更整洁的答案。为其他人写作以发现它有帮助。正如评论中提到的@Mark,您可以通过重复行并按元素相乘来找到非零元素a>0
并将其乘以b
将广播b
到的形状:a
output = (a > 0) * b
另一种方法是:
a[a>0] = np.tile(b,(a.shape[0],1))[a>0]
推荐阅读
- openstack - 输入快速启动命令时连接被拒绝 [Errno 111]
- javascript - 正则表达式匹配任何后跟数字的单词(但该单词可以包含特殊字符,如变音符号或重音符号)
- javascript - Javascript获取n个整数数组的索引总和
- javascript - React Native:如何导航到页面?
- qt - 如何在 Qt4 按钮单击时触发 .sh 文件或 bash 命令?
- haskell - 如何将我自己的 Data 构造函数转换为 Haskell 中的 List
- javascript - 方块不动 JavaScript
- php - PHP将所有可能的百分比选项放入数组
- javascript - 在字符串中查找多次出现
- excel - 如何用Excel表格替换Word中的文本?