当前位置: 首页 > 知识库问答 >
问题:

数组与矩阵的元素相乘

孔飞舟
2023-03-14

在R中,我可以在矩阵和(共形)向量之间进行分段乘法,例如:

X <- matrix(c(1, 2, 3, 4), nrow = 2)
a <- c(0, 1)
X * a

矩阵的每一行都与相应的向量元素相乘。我也可以对维度大于2的数组做同样的事情:

XX <- array(X, dim = c(2, 2, 2))
a <- c(0, 1)
XX * a

同样,每一行都与相应的向量元素相乘。我能为3d阵列和2d矩阵做类似的事情吗?我只想让数组中的每个子矩阵都按元素乘以一个矩阵。

共有2个答案

艾昊明
2023-03-14

通过首先从较小维的矩阵构造一个适当的数组,然后执行元素乘法,可以实现“分片”乘法(或者任何算术运算)。在你的例子中:

X <- 1:8
XX <- array(X, dim = c(2, 2, 2))
a <- c(0, 1)

# construct array for point-wise operation
expandeda <- array(a, dim=dim(XX))

XX * expandeda

这样做的结果表明,如你所说,a的单个元素是按行应用的(即应用于数组的第一个维度):

, , 1

     [,1] [,2]
[1,]    0    0
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    0    0
[2,]    6    8

使用array(a,dim=dim(XX))构造合适的数组不仅适用于3d和2d矩阵,而且适用于数组的任何维度,只要length(a)==dim(XX)[1]

张翰音
2023-03-14

你不能把它和2d矩阵相乘,但你可以试试这个XX*c(1,2,3,4)

 类似资料:
  • 问题内容: 我有两个数组,一个是形状,另一个是shape ,所以实际上是两个以矩阵为元素的数组。现在,我想计算并获得在两个数组中都重叠的所有元素(以形式)。使用普通的for循环,这是减慢速度的方法,因此我尝试使用numpys intersect1d方法进行尝试,但我不知道如何将其应用于此类数组。 问题答案: 使用关于唯一行的此问题中的方法) 请注意,使用浮点数是不安全的,因为它将导致不等于

  • SameGame示例 让我们以一个SameGame板为例。 如果两个块有一个共同的边,则它们是相邻的。组是由至少两个块组成的集合,所有块都是相同类型的,并且每个块都与组的至少一个其他成员相邻。当鼠标悬停在作为组的一部分的块上时,整个组应在视觉上突出显示。 举个矩阵的例子: 鼠标悬停怎么找一套? 我想过递归,但老实说,我不知道该怎么做。BFS似乎是我可以做的事情,但对于这样一个“简单”的事情来说,它

  • 题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法。 分析与解法 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵A的行数和另一个矩阵B的列数相等时才能定义。如A是m×n矩阵,B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p。 值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵

  • 1. 把数组中的 0 移到末尾 2. 改变矩阵维度 3. 找出数组中最长的连续 1 4. 有序矩阵查找 5. 有序矩阵的 Kth Element 6. 一个数组元素在 [1, n] 之间,其中一个数被替换为另一个数,找出重复的数和丢失的数 7. 找出数组中重复的数,数组值在 [1, n] 之间 8. 数组相邻差值的个数 9. 数组的度 10. 对角元素相等的矩阵 11. 嵌套数组 12. 分隔数组

  • 我有一个数组[25,-6,14,7,100]。预期输出为 基本上,循环时下一个元素被减/加到当前元素中。求和和乘积很容易,因为我只需要做 它在线程“main”java.lang.ArrayIndexOutOfBoundsException中给出了

  • 我实现了c程序,可以找到矩阵的元素:行的最大元素,同时列的最小元素,或行的-min元素,同时列的最大元素。例如,我们有数据。包含以下内容的txt文件: 4 7 8 9 10 6 5 4 11 5 0 1 12 4 2 7 13- 其中4是n-矩阵大小(4x4),7和10是这些数字。 下面是代码: 问题:我想知道我的代码是不是“脏”代码?因为我总是渴望让一切变得如此困难,只要有可能让它变得容易。是否