小编DNF*_*DNF的帖子

Julia中的反向迭代

昨天我有机会以相反的顺序迭代一个集合.我发现了这个reverse函数,但这并没有返回迭代器,但实际上创建了一个反向集合.

显然,曾经有一个Reverse迭代器,几年前被删除了.我也可以找到被称为某种东西(类型?)的引用Order.Reverse,但这似乎不适用于我的问题.

Iterators.jl包具有许多有趣的迭代模式,但显然不是反向迭代.

我当然可以使用该reverse函数,在某些情况下,例如reverse(eachindex(c)),它返回一个反向迭代器,但我更喜欢一般的反向迭代器.

有这样的事吗?

iteration julia reverse-iterator

8
推荐指数
1
解决办法
2195
查看次数

numba中的一组int

我正在计算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.

更新:在接受的答案输入后,这里的实现medianint8载体.它比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)

python performance types numpy numba

5
推荐指数
1
解决办法
2074
查看次数

类型定义:期望UnionAll,得到TypeVar

在 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<:AbstractVectorF<:AbstractFloat

types julia

5
推荐指数
1
解决办法
3793
查看次数

朱莉娅:追加到一个数组

有人请帮助我理解这一点。我在下面有以下代码。我正在尝试附加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

4
推荐指数
1
解决办法
8883
查看次数

如何获取数组类型参数

在 Julia 中,如果我 make x = rand(10,2),那么

>> typeof(x)
Matrix{Float64} (alias for Array{Float64, 2})
Run Code Online (Sandbox Code Playgroud)

如何访问类型参数,即如何获得数组xFloat64and的数组2

arrays types julia

2
推荐指数
1
解决办法
46
查看次数