太棒了!接下来我们来详细讲讲 Julia 的数组(Array),它是 Julia 最核心也最强大的数据结构之一。无论你是做科学计算、数据分析、机器学习还是图形处理,数组都无处不在!


🧱 一、数组的定义与基本操作

✅ 创建数组

a = [1, 2, 3, 4]              # 一维数组
b = [1 2; 3 4]                # 二维数组(矩阵)
c = zeros(3)                 # 三个元素都是 0.0 的数组
d = ones(Int, 2, 3)          # 二行三列全是 1 的整数数组
e = rand(5)                  # 生成五个 0~1 间的随机数

✅ 索引与切片(注意:Julia 的索引从 1 开始!)

a[1]                         # 第一个元素
a[end]                       # 最后一个元素
a[2:4]                       # 取第2到第4个元素
b[2,1]                       # 取二维数组第2行第1列


✏️ 二、修改数组

a[2] = 99                    # 修改第二个元素
push!(a, 10)                 # 添加元素到末尾
pop!(a)                      # 删除最后一个元素
insert!(a, 2, 50)            # 在第2个位置插入元素
deleteat!(a, 3)              # 删除第3个位置的元素


🔁 三、遍历数组

for i in a
    println(i)
end

for i in eachindex(a)
    println("第$i个元素是:", a[i])
end


📐 四、多维数组(矩阵)

A = [1 2 3;
     4 5 6]

size(A)                      # 返回尺寸:(2, 3)
ndims(A)                     # 维度数量:2
length(A)                    # 总元素数量:6
A[:, 2]                      # 第二列
A[1, :]                      # 第一行


🧠 五、常用数组函数

函数功能
length(a)元素个数
size(a)数组维度
sum(a)求和
mean(a)求均值(需 using Statistics
maximum(a) / minimum(a)最大/最小值
sort(a)排序
reverse(a)反转
findall(x -> x > 3, a)找出所有大于 3 的元素的索引
hcat(a, b) / vcat(a, b)水平或垂直拼接

🎯 六、数组推导式(列表生成)

squares = [i^2 for i in 1:10]                 # 生成 1 到 10 的平方
evens = [i for i in 1:20 if i % 2 == 0]       # 过滤偶数


🔎 七、广播操作(点运算)

Julia 中支持 广播(Broadcasting),可直接对整个数组进行操作,加 . 即可:

a = [1, 2, 3]
b = a .^ 2              # 所有元素平方 => [1, 4, 9]
c = a .+ 1              # 所有元素加一


🧪 八、小练习推荐

# 创建一个 5×5 的二维数组,值为从 1 到 25,按行排列
A = reshape(1:25, 5, 5)

# 将所有奇数元素变成 0
A[A .% 2 .== 1] .= 0


🧰 九、实用技巧

  • 使用 collect(1:10) 将范围转为数组
  • fill(7, 3, 3) 创建一个 3×3 全是 7 的数组
  • reshape(arr, m, n) 把数组改成 m×n 形状(不复制)

🧵 十、小结

操作示例
创建[1,2,3]zeros(3)rand(2,2)
索引a[1]a[2:4]A[:,2]
修改a[2]=99push!pop!
遍历for i in aeachindex
推导式[i^2 for i in 1:5 if i%2==0]
广播a .+ 1a .* b

如果你想继续学习矩阵运算、线性代数、数据可视化或与 Python/Numpy 对比的写法,我可以继续为你整理。要不要深入点?