You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中移除数组元素并缩减尺寸的实现方法(含二维行数组场景)

回答

问题1:移除一维数组的第三个元素

在Julia里,你可以用deleteat!函数(原地修改原数组)或者deleteat函数(返回新数组,不改动原数组)轻松实现这个需求。

方法1:直接修改原数组

如果希望直接更新原来的array变量,用带感叹号的deleteat!(感叹号在Julia里通常表示“原地修改”的语义):

# 先创建目标数组
array = zeros(10)
for i in 1:10
    array[i] = 2*i + 3
end

# 移除第三个元素(Julia数组索引从1开始,对应索引3)
deleteat!(array, 3)

执行后array就会变成你想要的9元素数组:

9-element Array{Float64,1}:
  5.0
  7.0
 11.0
 13.0
 15.0
 17.0
 19.0
 21.0
 23.0

方法2:生成新数组(保留原数组)

如果你不想改变原数组的内容,用不带感叹号的deleteat,它会返回一个删除元素后的新数组:

new_array = deleteat(array, 3)

这样原array保持不变,new_array就是你需要的目标数组。


问题2:二维行数组删除元素(不转列向量)

正如报错提示的,deleteat!只支持一维数组操作,所以直接用它处理二维行数组会失败。不过我们可以通过切片操作来实现需求,完全不需要转换为列向量。

删除指定位置的列(以删除第1列为例)

对于你的二维行数组a = [1 2 3 4 5],要删除第1个元素(对应数组的第1列),直接取第2列到最后一列的切片即可:

a = [1 2 3 4 5]
new_a = a[:, 2:end]

执行后new_a就是你想要的1×4二维行数组:

1×4 Array{Int64,2}:
 2  3  4  5

删除任意位置的列

如果要删除第k列(比如k=3),可以用vcat拼接前后的列索引,灵活实现任意位置的删除:

k = 3
new_a = a[:, vcat(1:k-1, k+1:end)]

这样就能得到删除第3列后的1×4数组:

1×4 Array{Int64,2}:
 1  2  4  5

原地修改二维行数组(可选)

如果你想直接更新原数组,可以通过重新赋值切片的方式实现:

a[:, :] = a[:, 2:end]

执行后原a就会被更新为1×4的行数组。

内容的提问来源于stack exchange,提问作者Julien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:10:16