添加2d数组和1d数组的数学解释是什么?

迪兰姆

我似乎无法复制这种numpy算法。我正在使用Julia,但想知道此代码的数学解释。似乎打破了我对线性代数的了解。

X = np.arange(-5, 5, 0.2).reshape(-1, 1)

X.shape  ## (50, 1)

test = np.sum(X**2, 1).reshape(-1, 1) + np.sum(X**2, 1)

test.shape  ## (50, 50)

在朱莉娅,我会写

X = reshape(collect(range(-5, stop=5, length=N)), :, 1);

size(X)  ## (50, 1)

test = sum(X.^2, dims=2) + vec(sum(X.^2, dims=2));

size(test) ## (50, 1)

我试图考虑将两个向量相加后得出50x50矩阵的结果吗?我知道numpy在幕后使用了大量广播,但是对我来说这还不清楚。

numpy在这里做什么的数学符号或茱莉亚等价物是什么?

DNF

您正在做很多事情,这些事情确实掩盖了您的观点,我认为这涉及如何添加不同形状的数组。

蟒蛇:

In [21]: x = np.random.rand(5, 1)                                               

In [22]: x.shape                                                                
Out[22]: (5, 1)

In [23]: y = np.random.rand(1, 4)                                               

In [24]: y.shape                                                                
Out[24]: (1, 4)

In [25]: (x + y).shape                                                          
Out[25]: (5, 4)

朱莉娅:

julia> x = rand(5);

julia> y = rand(1, 4);

julia> x + y
ERROR: DimensionMismatch("dimensions must match")

julia> x .+ y
5×4 Array{Float64,2}:
 1.95779  1.31897   1.23345   1.32423 
 1.78126  1.14244   1.05692   1.14771 
 1.08306  0.444243  0.35872   0.449509
 1.69756  1.05874   0.97322   1.06401 
 1.18661  0.547789  0.462265  0.553054

julia> size(x .+ y)
(5, 4)

如您所知,Python默认情况下会广播数组,而Julia要求您使用点运算符专门要求它.

正是因为添加两个不同形状的数组没有意义,Julia默认不会广播。同样,与乘法不同*.*区别在于:

julia> A = [1 2; 3 4]
2×2 Array{Int64,2}:
 1  2
 3  4

julia> B = [4 5; 6 7]
2×2 Array{Int64,2}:
 4  5
 6  7

julia> A * B
2×2 Array{Int64,2}:
 16  19
 36  43

julia> A .* B
2×2 Array{Int64,2}:
  4  10
 18  28

普通的*是矩阵乘法,而后者是元素级数组乘法。

另一个例子:

julia> A = [1 2 3; 4 5 6]
2×3 Array{Int64,2}:
 1  2  3
 4  5  6

julia> b = [7, 8]
2-element Array{Int64,1}:
 7
 8

julia> A * b
ERROR: DimensionMismatch("matrix A has dimensions (2,3), vector B has length 2")

julia> A .* b
2×3 Array{Int64,2}:
  7  14  21
 32  40  48

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

展平2D数组1D和

来自分类Dev

为1D numpy数组创建成对2D数组的更有效方法是什么?

来自分类Dev

为什么* pointer_name在1D和2D数组中的行为不同

来自分类Dev

指向1D / 2D数组的指针的基本类型是什么,为什么需要双重解引用?

来自分类Dev

为什么初始化1D数组和2D数组以在React js中声明的行为不同

来自分类Dev

需要将1D数组转换为2D进行串联的背后的逻辑是什么?

来自分类Dev

需要将1D数组转换为2D进行串联的背后的逻辑是什么?

来自分类Dev

如何对1d和2d数组强制使用2d形状

来自分类Dev

将2d数组添加到1d数组

来自分类Dev

C ++ 2D数组到1D数组

来自分类Dev

在1d数组中填充2d数组

来自分类Dev

使用步骤迭代1D数组和2D数组

来自分类Dev

比较2D字符数组和1D字符数组

来自分类Dev

2d数组和1d长数组的块积,结果应该是3d数组

来自分类Dev

用1D numpy数组制作2D

来自分类Dev

将 2d 数组索引为 1d

来自分类Dev

C ++ AMP中1D和2D数组上operator []的行为。

来自分类Dev

C ++语法差异:2D和1D数组(指针算术)

来自分类Dev

2D ID数组和1D权重的加权numpy bincount

来自分类Dev

opengl:glGetTexImage用于2d纹理和1d纹理数组混淆

来自分类Dev

在C ++中通过引用传递1d和2d数组

来自分类Dev

从2d numpy数组(成为1d numpy数组的一列)和1d np标签数组创建熊猫数据框

来自分类Dev

将3D数组的1D数组添加到3D数组的每个2D数组上

来自分类Dev

如何使1d数组乘以2d数组导致python的3d数组

来自分类Dev

如何使1d数组乘以2d数组导致python的3d数组

来自分类Dev

Java:将2D数组转换为带有组织和随机数的1D数组

来自分类Dev

Python Numpy在带有2D数组的1D数组上相交1d

来自分类Dev

2个1D数组中的javascript 2D数组

来自分类Dev

为什么在C ++中2D和1D数组中auto在“范围为”中的工作方式不同

Related 相关文章

  1. 1

    展平2D数组1D和

  2. 2

    为1D numpy数组创建成对2D数组的更有效方法是什么?

  3. 3

    为什么* pointer_name在1D和2D数组中的行为不同

  4. 4

    指向1D / 2D数组的指针的基本类型是什么,为什么需要双重解引用?

  5. 5

    为什么初始化1D数组和2D数组以在React js中声明的行为不同

  6. 6

    需要将1D数组转换为2D进行串联的背后的逻辑是什么?

  7. 7

    需要将1D数组转换为2D进行串联的背后的逻辑是什么?

  8. 8

    如何对1d和2d数组强制使用2d形状

  9. 9

    将2d数组添加到1d数组

  10. 10

    C ++ 2D数组到1D数组

  11. 11

    在1d数组中填充2d数组

  12. 12

    使用步骤迭代1D数组和2D数组

  13. 13

    比较2D字符数组和1D字符数组

  14. 14

    2d数组和1d长数组的块积,结果应该是3d数组

  15. 15

    用1D numpy数组制作2D

  16. 16

    将 2d 数组索引为 1d

  17. 17

    C ++ AMP中1D和2D数组上operator []的行为。

  18. 18

    C ++语法差异:2D和1D数组(指针算术)

  19. 19

    2D ID数组和1D权重的加权numpy bincount

  20. 20

    opengl:glGetTexImage用于2d纹理和1d纹理数组混淆

  21. 21

    在C ++中通过引用传递1d和2d数组

  22. 22

    从2d numpy数组(成为1d numpy数组的一列)和1d np标签数组创建熊猫数据框

  23. 23

    将3D数组的1D数组添加到3D数组的每个2D数组上

  24. 24

    如何使1d数组乘以2d数组导致python的3d数组

  25. 25

    如何使1d数组乘以2d数组导致python的3d数组

  26. 26

    Java:将2D数组转换为带有组织和随机数的1D数组

  27. 27

    Python Numpy在带有2D数组的1D数组上相交1d

  28. 28

    2个1D数组中的javascript 2D数组

  29. 29

    为什么在C ++中2D和1D数组中auto在“范围为”中的工作方式不同

热门标签

归档