For loop 用嵌套for循环填充Julia矩阵
我有两个数组和一个空矩阵,我需要执行一个函数,使生成的矩阵包含两个数组的每个组合 不幸的是,我不能单独运行数组,因为它们都是函数的可选参数。我认为最好的方法是通过嵌套循环来实现,但现在我不确定 我曾尝试将其中一个矩阵相乘,以使其包含必要的副本,但由于实际数据有点大,我很难做到这一点 我已经尝试过这些嵌套循环的许多版本For loop 用嵌套for循环填充Julia矩阵,for-loop,matrix,julia,For Loop,Matrix,Julia,我有两个数组和一个空矩阵,我需要执行一个函数,使生成的矩阵包含两个数组的每个组合 不幸的是,我不能单独运行数组,因为它们都是函数的可选参数。我认为最好的方法是通过嵌套循环来实现,但现在我不确定 我曾尝试将其中一个矩阵相乘,以使其包含必要的副本,但由于实际数据有点大,我很难做到这一点 我已经尝试过这些嵌套循环的许多版本 a = [ 1 2 3 ] b = [ 4 5 6 7 ] ab = zeros(3,4) for i = 1:length(a) for j = 1:length(b)
a = [ 1 2 3 ]
b = [ 4 5 6 7 ]
ab = zeros(3,4)
for i = 1:length(a)
for j = 1:length(b)
ab[??] = function(x = a[??], y = b[??])
end
end
ab=[1x4 1x5 1x6 1x7,2x4 2x5 2x6 2x7,3x4 3x5 3x6 3x7]这不只是
a'.*b
?
哦,现在我必须再写一些字符才能超过可接受的最小答案长度,但我真的没有什么要添加的,我希望代码是不言自明的。这不是很简单吗
a'.*b
?
哦,现在我必须再写一些字符才能超过可接受的最小答案长度,但我没有什么要补充的,我希望代码是不言自明的。您的问题可以通过以下方式解决:
a'
中的素数转置a
使形状正确
但是请注意,a=[1 2 3]
构造了一个1×3数组{Int64,2}
,它是一个矩阵。对于向量(您可能称之为“数组”),请使用逗号:a=[1,2,3]
等。如果您的数据是这种形式的,则必须反过来转置:
julia> f.([1,2,3], [4,5,6,7]')
3×4 Array{Tuple{Int64,Int64},2}:
(1, 4) (1, 5) (1, 6) (1, 7)
(2, 4) (2, 5) (2, 6) (2, 7)
(3, 4) (3, 5) (3, 6) (3, 7)
顺便说一句,这被称为(for
f=*
),或者是它的泛化。如果f
是运算符∘代码>,您可以使用虚线中缀广播:a'∘. b
您的问题可以通过以下方式解决:
a'
中的素数转置a
使形状正确
但是请注意,a=[1 2 3]
构造了一个1×3数组{Int64,2}
,它是一个矩阵。对于向量(您可能称之为“数组”),请使用逗号:a=[1,2,3]
等。如果您的数据是这种形式的,则必须反过来转置:
julia> f.([1,2,3], [4,5,6,7]')
3×4 Array{Tuple{Int64,Int64},2}:
(1, 4) (1, 5) (1, 6) (1, 7)
(2, 4) (2, 5) (2, 6) (2, 7)
(3, 4) (3, 5) (3, 6) (3, 7)
顺便说一句,这被称为(forf=*
),或者是它的泛化。如果f
是运算符∘代码>,您可以使用虚线中缀广播:a'∘. b
还有一个列表:
julia> a = [1,2,3];
julia> b = [4,5,6,7];
julia> ab = [(x,y) for x in a, y in b]
3×4 Array{Tuple{Int64,Int64},2}:
(1, 4) (1, 5) (1, 6) (1, 7)
(2, 4) (2, 5) (2, 6) (2, 7)
(3, 4) (3, 5) (3, 6) (3, 7)
还有一个列表:
julia> a = [1,2,3];
julia> b = [4,5,6,7];
julia> ab = [(x,y) for x in a, y in b]
3×4 Array{Tuple{Int64,Int64},2}:
(1, 4) (1, 5) (1, 6) (1, 7)
(2, 4) (2, 5) (2, 6) (2, 7)
(3, 4) (3, 5) (3, 6) (3, 7)