gpt4 book ai didi

arrays - 在 Julia 中仅用另一个数组的值替换数组中的零

转载 作者:行者123 更新时间:2023-12-04 12:18:01 24 4
gpt4 key购买 nike

我试图用另一个数组替换一个数组,但只在原始数组为零的地方。这些数组的维度相等。

Array1 = [0, 2, 4, 2, 5, 0, 0, 2, 5]
Array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
我目前正在尝试使用下面的代码将 array2 叠加到数组 1 中,其中 array1 的值等于零。
Array1[Array1 .== 0] .= Array2
从这里我希望得到以下...
Array1 = [1, 2, 4, 2, 5, 6, 7, 2, 5]
但相反,我收到一个错误...
ERROR: DimensionMismatch("array could not be broadcast to match destination")
有没有一种很好的方法来做到这一点,而无需一次遍历每个列表/数组一个元素?我正在处理非常大的数组,不知道这是否太慢。任何帮助表示赞赏。

最佳答案

这几乎可以按照您的方式轻松完成:

Array1[Array1 .== 0] .= Array2[Array1 .== 0]
零件 Array1 .== 0正在创建一个长度与原始数组相同的 0 和 1 数组。不满足条件的地方打零,满足条件的地方打1。
当您执行以下操作时:
Array1 .= Array2
您告诉 julia 将 Array2 按元素复制到 Array1 中,这是因为 Array1 和 Array2 具有相同的长度。但是当你尝试做
Array1[Array1 .== 0] .= Array2
您告诉将 Array2 的每个元素放入 Array1 中的元素子集(满足您的条件的元素)。这会失败,因为数组的长度不同。如果你这样做
Array1[Array1 .== 0] .= Array2[Array1 .== 0] 
您现在告诉“将 Array1 满足条件的索引中 Array2 的所有元素复制到 Array1 中的同一位置”。现在这两个长度相同。
但是请注意, 在 julia for 循环中速度很快 ,所以如果你使用它们,你会没事的。

关于arrays - 在 Julia 中仅用另一个数组的值替换数组中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65376306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com