gpt4 book ai didi

math - 添加导致 `MethodError: no method matching +(::Array{Int64, 0},::Int64)`

转载 作者:行者123 更新时间:2023-12-02 16:09:41 24 4
gpt4 key购买 nike

我正在使用 Julia,我尝试测试一个创建图像并根据给定字符串分配红色值的函数。只要听到这句话,我相信您能想到我本可以做的一百万件事来接收错误消息,但是这个错误:

enter image description here

在第 13 行生成。

这是第 13 行:

r = (i + 64*rand(0:3) - 1)/255

这只是数学! r 是我正在分配的新变量。 i 是数组中每个字符的索引。这似乎在控制台中有效,所以可能之前的代码中发生了一些奇怪的事情,只是没有被捕获。这是整个函数:

function generate(string, width)
img = rand(RGB,width,floor(Int,length(string)/width) + 1)
for n in 1:length(string)
i = indexin(string[n], alphabet)
r = (i + 64*rand(0:3) - 1)/255
g = img[n].g
b = img[n].b
img[n] = RBG(r,g,b)
end
return img
end

有谁知道这个错误消息是什么意思,或者我做错了什么?

最佳答案

这里的i 不是一个整数,而是一个数组。 indexin 用于查找数组中每个元素在另一个数组中的位置;仅查找您可能需要的一个元素 findfirst:

julia> findfirst(isequal('c'), collect("abcde"))
3

julia> indexin(collect("cab"), collect("abcde"))
3-element Vector{Union{Nothing, Int64}}:
3
1
2

julia> indexin('c', collect("abcde"))
0-dimensional Array{Union{Nothing, Int64}, 0}:
3

另请注意,如果它们找不到该字母,它们都将返回 nothing,您可能需要决定如何处理。 (可能使用 if else,您还可以使用函数 something。)

julia> indexin('z', collect("abcde"))
0-dimensional Array{Union{Nothing, Int64}, 0}:
nothing

julia> findfirst(isequal('z'), collect("abcde")) === nothing
true

最后,请注意,像这样索引字符串不是很可靠,您可能需要迭代它:

julia> "cañon"[4]
ERROR: StringIndexError: invalid index [4], valid nearby indices [3]=>'ñ', [5]=>'o'

julia> for (n, char) in enumerate("cañon")
@show n, char
end
(n, char) = (1, 'c')
(n, char) = (2, 'a')
(n, char) = (3, 'ñ')
(n, char) = (4, 'o')
(n, char) = (5, 'n')

关于math - 添加导致 `MethodError: no method matching +(::Array{Int64, 0},::Int64)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68342008/

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