Mathematica:如何将函数应用于表的某一列
我想将函数应用于表的特定列。假设 (mxn) 表的第 i 列。实际上我只想将该列中的所有元素与标量相乘,但应用通用函数也可以。
它可能只需要一些 Map 或 MapAt 命令,可能与 Transpose 结合使用,以便应用于行而不是列 - 但我无法找出寻址整个列(或行)的正确语法。
任何提示都是高度赞赏。
I would like to apply a function to a specific column of a table. Say to the i-th column of a (m x n) table. Actually I just want to multiply all elements in that column with a scalar, but the application of a general function would be fine as well.
It probably just needs some Map or MapAt command, maybe combined with a Transpose in order to apply to rows instead of columns - but I can't figure out the correct syntax for addressing an entire column (or row)..
Any hints would be highly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这是一个 3x3 的表格:
Column 2 is
table[[All, 2]]
:因此,仅修改该列很简单:
Here's a 3x3 table:
Column 2 is
table[[All, 2]]
:So it's a simple matter to modify only that column:
例如,
将 f 应用于 mat 第 n 列的每个元素。因此,例如,
将应用 Sin[Cos[#]]&到第二列的每个元素, while
会将第二列的每个元素乘以 s
For example,
will apply f to each element of the nth column of mat. So, for instance,
will apply Sin[Cos[#]]& to each element of the second column, while
will multiply each element on the second column by s
一种通用方法是使用 ReplacePart
例如,将 f 应用于 mat 的第 3 列:
以下将每个条目乘以 10:
然而,一种“快速”方法如下:(
与第一种方法不同,中的所有条目mat 的第 3 列现在已修改,目前尚不清楚您是要修改现有表,还是要创建一个经过修改的新表,而保持原始表不变)
One versatile approach is to use ReplacePart
For example, to apply f to column 3 of mat:
The following multiplies each entry by 10:
However, a 'quick' way to do this it as follows:
(Unlike the first method, all entries in column 3 of mat are now modified. It is not clear whether you want to modify the existing table, or to create a new table with modifications, leaving the original intact)
MapAt 函数接受以下部分规范:
将“f”应用于矩阵的第 3 列。
MapAt function accepts the following Part specification:
to apply 'f' to column 3 of your matrix.
我发现的另一个紧凑的解决方案是使用 Map 和 MapAt:
这是一个示例矩阵:
现在将函数 f 应用于第二列:
结果是:
Another compact solution I found is using Map and MapAt:
Here is an example Matrix:
Now apply the function f to the second column:
The result is then: