昨天我有机会以相反的顺序迭代一个集合.我发现了这个reverse函数,但这并没有返回迭代器,但实际上创建了一个反向集合.
显然,曾经有一个Reverse迭代器,几年前被删除了.我也可以找到被称为某种东西(类型?)的引用Order.Reverse,但这似乎不适用于我的问题.
该Iterators.jl包具有许多有趣的迭代模式,但显然不是反向迭代.
我当然可以使用该reverse函数,在某些情况下,例如reverse(eachindex(c)),它返回一个反向迭代器,但我更喜欢一般的反向迭代器.
有这样的事吗?
我正在计算int8s 向量中最常用的数字.当我设置一个ints 的计数器数组时,Numba抱怨:
@jit(nopython=True)
def freq_int8(y):
"""Find most frequent number in array"""
count = np.zeros(256, dtype=int)
for val in y:
count[val] += 1
return ((np.argmax(count)+128) % 256) - 128
Run Code Online (Sandbox Code Playgroud)
调用它我收到以下错误:
TypingError: Invalid usage of Function(<built-in function zeros>) with parameters (int64, Function(<class 'int'>))
Run Code Online (Sandbox Code Playgroud)
如果我删除dtype=int它的工作,我得到一个体面的加速.然而,我很困惑为什么声明一个ints 数组不起作用.有没有已知的解决方法,这里有没有值得拥有的效率增益?
背景:我试图削减一些重量级代码的微秒.我特别受到伤害numpy.median,并一直在调查Numba,但我正在努力改进median.找到最常用的数字是一个可接受的替代方案median,在这里我已经能够获得一些性能.上面的numba代码也快于numpy.bincount.
更新:在接受的答案输入后,这里的实现median的int8载体.它比numpy.median以下快大约一个数量级:
@jit(nopython=True)
def median_int8(y):
N2 = len(y)//2
count = np.zeros(256, dtype=np.int32) …Run Code Online (Sandbox Code Playgroud) 在 v0.6 的 Julia 手册中,我发现以下内容:
abstract type Pointy{T} end
struct Point{T} <: Pointy{T}
x::T
y::T
end
Run Code Online (Sandbox Code Playgroud)
这工作得很好,我认为以下也应该:
abstract type Foo{V, F} end
struct Bar{V, F} <: Foo{V, F}
x::V{F}
end
Run Code Online (Sandbox Code Playgroud)
然而,的定义Bar给出了以下错误
ERROR: TypeError: Type{...} expression: expected UnionAll, got TypeVar
Run Code Online (Sandbox Code Playgroud)
出了什么问题,我怎样才能实现我真正想要的,即指定V<:AbstractVector和F<:AbstractFloat?
有人请帮助我理解这一点。我在下面有以下代码。我正在尝试附加index[i]-1到一个空数组。但是我收到此错误:“ BoundsError: attempt to access 0-element Array{Any,1} at index [1]”:
sample_size_array = [9,5,6,9,2,6,9]
n_minus_1 = []
array_length = length(sample_size_array)
for i in 1:array_length
n_minus_1[i].append(sample_size_array[i] -1)
end
println(n_minus_1)
Run Code Online (Sandbox Code Playgroud)
如果 Julia 不明白array[0]为什么我从 0 开始而不是从 1 开始?
在 Julia 中,如果我 make x = rand(10,2),那么
>> typeof(x)
Matrix{Float64} (alias for Array{Float64, 2})
Run Code Online (Sandbox Code Playgroud)
如何访问类型参数,即如何获得数组x是Float64and的数组2?