【问题标题】:How to deal with "non-conformable" arrays?如何处理“不一致”的数组?
【发布时间】:2014-06-24 21:01:09
【问题描述】:

如何对两个数组进行逐元素算术运算 在第一个维度上是一致的,但还有一个额外的维度?

例如,将数组 a (3 x 3 x 2) 乘以数组 b (3 x 3):

a <- array(1:18, dim=c(3,3,2))
b <- diag(3)

以下失败,因为数组不一致。

> a * b

要使其正常工作,您必须将数组 b 转换为正确的数组 维数。

> a * array(b, dim=c(3,3,2))

这并没有让我觉得很直截了当,我相信一定有 是一种更简单的方法。

【问题讨论】:

    标签: arrays r multidimensional-array


    【解决方案1】:

    你可以试试:

    a * c(b)
    

    c 将剥离属性,然后允许将 b 回收为一个简单的向量,并导致我认为是您想要的结果:

    , , 1
    
         [,1] [,2] [,3]
    [1,]    1    0    0
    [2,]    0    5    0
    [3,]    0    0    9
    
    , , 2
    
         [,1] [,2] [,3]
    [1,]   10    0    0
    [2,]    0   14    0
    [3,]    0    0   18
    

    【讨论】:

    • 是的,这就是我们想要的结果。
    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2015-04-25
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多