julia> display([i*j for i=1:3, j=1:3])
3×3 Array{Int64,2}:
1 2 3
2 4 6
3 6 9
julia> display([i*j for i=1:3, j=1:3 i>=j])
6-element Array{Int64,1}:
1
2
3
4
6
9
不出意外。我想要的是: 3×3阵列{Int64,2}: 1 2 4 3 6 9
我认为需要一个for循环。我不想要的是生成整个数组,然后过滤掉或替换它们。
虽然示例是对称的,但它与q并不真正相关。任何f(i,j)都可以代替i * j。 (对称与否)
答案 0 :(得分:4)
我想你想写[i*j for i=1:3, j=1:3 if i>=j]
。 if
条件将始终使您的结果成为矢量。
如何避免生成整个数组,例如:
x = Matrix{Int}(3,3)
for i in 1:3, j in 1:i
x[i,j] = i*j
end
y = LowerTriangular(x)