【发布时间】:2018-04-18 15:47:36
【问题描述】:
如果我有一个包含随机值的数组 A,我想定义一个数组 B,其中每个 i 的长度为 A,B[i] = (A[i])²
首先,我尝试了以下代码:
using Distributions
A = rand(Uniform(1,10),1,20)
B = A
for i in 1:20
B[i] = (A[i])^2
end
经过这些操作,我有A = B
A
1×20 Array{Float64,2}:
26.0478 5.36654 99.675 23.18 … 1.54846 91.3444 9.41496 2.91666
B
1×20 Array{Float64,2}:
26.0478 5.36654 99.675 23.18 … 1.54846 91.3444 9.41496 2.91666
所以我尝试了另一种方法:
B = A^2
出现以下错误:
ERROR: DimensionMismatch("A has dimensions (1,20) but B has dimensions (1,20)")
如果我这样做,例如,B = 2*A 它工作正常...
一些有用的想法?
谢谢
【问题讨论】:
-
您在这里有一个重大误解:
B = A不会复制 -B和A将是相同数据的两个名称。您希望B = copy(A)进行复制。 -
A^2不起作用的原因是它与A*A相同,并且不能将两个向量相乘。相反,您必须指定要逐个元素的操作,这就是.*将要做的。
标签: arrays julia broadcasting elementwise-operations