Python R中下列矩阵运算的名称和函数

Python R中下列矩阵运算的名称和函数,python,r,matrix,Python,R,Matrix,我试图将Python生成的[50 x 50]矩阵复制为: n = 50 a = np.linspace(-5, 5, n).reshape(-1,1) b = a np.sum(a**2, 1).reshape(-1, 1) + np.sum(b**2, 1) 使用R。问题是结果是某种矩阵,不能通过以下方式再现: n = 50 a = seq(-5, 5, length.out = n) b = a a

我试图将Python生成的[50 x 50]矩阵复制为:

n = 50                                         
a = np.linspace(-5, 5, n).reshape(-1,1)
b = a
np.sum(a**2, 1).reshape(-1, 1) + np.sum(b**2, 1)
使用R。问题是结果是某种矩阵,不能通过以下方式再现:

n = 50     
a = seq(-5, 5, length.out = n)
b = a
a^2 + b^2
生成一个向量

我不熟悉Python中的对象名,但我看到
np.sum(a**2,1).reshave(-1,1)
生成了一个看起来像[50 x 1]列向量的东西:

array([[  2.50000000e+01],
       [  2.30008330e+01],
       ...
       [  2.10849646e+01],
       [  2.30008330e+01],
       [  2.50000000e+01]])
np.sum(b**2,1)

看起来像是同一个向量的转置。所以我们有一个形式为[50 x 1]*[1 x 50]=[50 x 50]的运算


此操作的通用名称是什么?我怎样才能在R中重现它呢?

你正在寻找的
?我相信是外部的。根据帮助文件,它返回:

阵列X和Y的外积。。。具有维度的数组 c(尺寸(X)、尺寸(Y))

因此,对于您的具体示例,请尝试:

outer(a^2,b^2,FUN=`+`)
#         [,1]     [,2]     [,3]
#[1,] 50.00000 48.00083 46.08496  ...to col 50
#[2,] 48.00083 46.00167 44.08580  ...to col 50
#[3,] 46.08496 44.08580 42.16993  ...to col 50
# ...to row 50

现在还不太清楚你想要的结果是什么,但可能是
outer(a^2,b^2,FUN=`+`)
?这正是我需要的。非常感谢。如果要将其作为答案发布,请包含操作的通用名称。我很乐意接受。我认为矩阵的外积包含元素的乘法。我们在这里进行总结。当我明白你所说的乘积是严格乘法时,帮助文件似乎与其参数列表中的内容相矛盾:“FUN-一个用于外部乘积的函数”-类似地,wikipedia-“在某些编程语言中,给定一个双参数函数f(或二进制运算符),f和两个一维数组A和B的外积是一个二维数组C,C[i,j]=f(A[i],B[j])”——这意味着可以用另一个函数代替乘法,但仍然称之为外积。我明白了,最终会接受你的答案,除非有另一个答案,包括一个非编程的严格数学术语,用于所讨论的操作。
outer(a^2,b^2,FUN=`+`)
#         [,1]     [,2]     [,3]
#[1,] 50.00000 48.00083 46.08496  ...to col 50
#[2,] 48.00083 46.00167 44.08580  ...to col 50
#[3,] 46.08496 44.08580 42.16993  ...to col 50
# ...to row 50