matrix - 有没有办法在 Octave 中成对求和,矢量化(即映射和减少矩阵)?
问题描述
有没有办法在 Octave 中成对求和?
例如,如果我有一个 10 行乘 4 列。我想要一个新的 10 行乘 2 列,其中每一列是对的总和。
前任。
[ 1 2 3 4
2 3 4 5
...
]
=> [ 3 7
5 9
...
]
我知道如何使用 for 循环和 accumarray 等来完成此操作,但我只是不确定是否有一种完全矢量化的方法。
解决方案
这里还有一些选择。
鉴于:
a = reshape(1:40, 10, 4)
a =
1 11 21 31
2 12 22 32
3 13 23 33
4 14 24 34
5 15 25 35
6 16 26 36
7 17 27 37
8 18 28 38
9 19 29 39
10 20 30 40
把事情简单化
b = [sum(a(:,1:2),2) sum(a(:,3:4),2)]
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
挤一点
b = squeeze(sum(reshape(a, [], 2, 2), 2))
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
或者,我个人最喜欢的...
数学的
b = a * [1 1 0 0; 0 0 1 1].'
b =
12 52
14 54
16 56
18 58
20 60
22 62
24 64
26 66
28 68
30 70
推荐阅读
- c# - Ef core:执行 MaxAsync 时序列不包含任何元素
- c# - 通过纯c#代码生成App.Config文件的最简单方法是什么
- mysql - MySQL 查询:如何获取按最新提交日期排序的热门帖子
- java - 运行 netlogo-headless.sh 时无法识别选项的来源?
- arrays - Angular 6 - 将 JSON 转换为数组
- python - 如何只导入 __init__.py 的一部分?
- laravel - Laravel - 如何关联两个集合,如 Eloquent 方法“belongsToMany”和“with”
- ruby - Ruby 或 Bash 或 Grep 正则表达式不适用于“?” 即前一个字符出现 0 次或 1 次
- sql - 更新具有相同主键的字段的值
- ruby-on-rails - 在 Rails 中查询 - 查询中的双引号字符串