小编use*_*278的帖子

bisect_left和bisect_right何时不相等?

在我的理解中,bisect_left和bisect_right是做同样事情的两种不同方式:二分法,一个来自左边,另一个来自右边.因此,它们具有相同的结果.假设列表和正在搜索的值是相同的,在什么情况下这两者不相等,即它们什么时候会返回不同的结果?

python python-2.7

23
推荐指数
6
解决办法
2万
查看次数

术语"矢量化"在不同的背景下是否意味着不同的东西?

基于我之前读过的内容,矢量化是一种称为SIMD的并行化形式.它允许处理器同时在阵列上执行相同的指令(例如添加).

然而,在阅读关于Julia和R的矢量化性能的矢量化和非矢量化代码之间的关系时,我感到困惑.该帖子声称,Julia和R开发的Julia代码(通过循环)比矢量化代码更快,因为:

这使一些不熟悉R内部的人感到困惑.因此值得注意的是如何提高R代码的速度.性能改进的过程非常简单:首先从devectorized R代码开始,然后用向量化R代码替换它,然后最终在devectorized C代码中实现这个向量化R代码.遗憾的是,最后一步对于许多R用户是不可见的,因此他们认为向量化本身是提高性能的机制.矢量化本身无助于使代码更快.使R中的矢量化有效的原因在于它提供了一种将计算移动到C中的机制,其中一个隐藏的devectorization层可以发挥其神奇作用.

它声称R将用R编写的矢量化代码转换为C中的devectorized代码.如果矢量化更快(作为一种并行化形式),为什么R会驱动代码,为什么这是一个加号?

r vectorization julia

6
推荐指数
2
解决办法
364
查看次数

在什么情况下 Julia 会将内存分配给个位数?

假设我写这个函数

    function test_function(T)
        c = 1
        d = 31
        q = 321
        b = 32121
        a = 10
        for i in 1:T
            c = d + q + b + a
        end
    end
Run Code Online (Sandbox Code Playgroud)

不会有内存分配。然而,在我自己的代码中,我编写了类似的循环,但遇到了大量的内存分配。我无法分享我的完整代码,但是当我使用时--track-allocation=user,我看到以下结果

    80000     q      = 3
        -     p      = 0.1
        -     p_2    = 3
        -     q_2    = .2
        -
   240000     r      =  p - p_2 + q_2 - q;
Run Code Online (Sandbox Code Playgroud)

上面的代码是在一个for循环中。这对我来说很奇怪——为什么 Julia 会把内存分配给个位数?

memory julia

5
推荐指数
0
解决办法
82
查看次数

Remove groups by condition

Suppose I have the following dataframe

using DataFrames
df = DataFrame(A = 1:10, B = ["a","a","b","b","b","c","c","c","c","d"])
grouped_df  = groupby(df, "B")
Run Code Online (Sandbox Code Playgroud)

I would have four groups. How can I drop the groups that have fewer than, say, 2 rows? For example, how can I keep only groups a,b, and c? I can easily do it with a for loop, but I don't think the optimal way.

dataframe julia

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

“复制”有什么意义?

我对 的目的感到非常困惑copy。如这篇文章中所示,copy创建浅复制而deepcopy创建独立对象。如果您使用copy,则底层引用保持不变。如果我这样做b = copy(a)并改变了a,那么b也会改变。

那么目的是什么呢copy?我们已经有了=。有什么copy可以做但=不能做的事吗?

julia

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

Julia 中的奇怪分配

考虑这个函数

function test_function(state, M, new_number)
    M[state..., 1] = new_number
end
Run Code Online (Sandbox Code Playgroud)

在我的程序中,我想多次运行此函数,每次参数都是新的(有时由用户提供)。

为了测试这个函数的内存分配和速度,我写了这个循环


function test_for_loop(loop_num)
    state = [1, 1, 1 ]
    M     = randn(10,10,10,10)
    new_number = 3.0
    for i in 1:loop_num
        test_function(state, M, new_number)
    end 
end 

Run Code Online (Sandbox Code Playgroud)

请注意,编写纯粹是为了测试多次应用test_for_loop的效率。test_function实际上,在每个应用程序中,stateM、 和new_number都是事先未知的。

我用@allocated查找内存分配。随着我的增加loop_num,内存分配也增加了。我不知道为什么所以我用了--track-allocation. 事实证明M[state...] = new_number占用了大量的内存分配。有人可以解释一下为什么吗?为什么它分配额外的内存,以及如何减少内存分配,使其不随 增加loop_num

memory julia

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

ord()和Unicode表没有给出相同的数字

根据Python文档,ord()在Unicode中给出相应的数字.当我进入

ord('A')
Run Code Online (Sandbox Code Playgroud)

我得到了数字65.但是,当我在名为Unicode Table(http://unicode-table.com/en)的站点中检查"A"的Unicode编号时,它表示该数字为41.

为什么会这样?什么是Unicode的正确参考指南?

python

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

我的 Julia 循环/去向量化代码出了什么问题

我正在使用 Julia 1.0。请考虑以下代码:

using LinearAlgebra
using Distributions

## create random data
const data = rand(Uniform(-1,2), 100000, 2)

function test_function_1(data)
    theta = [1 2]
    coefs = theta * data[:,1:2]'
    res   = coefs' .* data[:,1:2]
    return sum(res, dims = 1)'
end

function test_function_2(data)
    theta   = [1 2]
    sum_all = zeros(2)
    for i = 1:size(data)[1]
        sum_all .= sum_all + (theta * data[i,1:2])[1] *  data[i,1:2]
    end
    return sum_all
end
Run Code Online (Sandbox Code Playgroud)

第一次运行后,我计时了

julia> @time test_function_1(data)
  0.006292 seconds (16 allocations: 5.341 MiB)
2×1 Adjoint{Float64,Array{Float64,2}}:
 150958.47189289227
 225224.0374366073

julia> …
Run Code Online (Sandbox Code Playgroud)

vectorization julia

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

两种不同类型的数组数组

我对不同类型的数组数组感到困惑。考虑这两个例子

a = Array{Float64}[]
push!(a,[1, 2])
push!(a,[3, 4])
push!(a,[1 2; 3 4])

b = Array[[1.0, 2.0], [3.0,4.0], [1.0 2.0; 3.0 4.0]]

Run Code Online (Sandbox Code Playgroud)

我不确定如何ab不同。假设我打算对aor 中的b每个元素运行一个 for 循环,并将每个元素乘以 2。也就是说,

for i in 1:3 a[i] = a[i]*2 end

for i in 1:3 b[i] = b[i]*2 end
Run Code Online (Sandbox Code Playgroud)

我分别为两条线的运行时间计时,但它们同样快。是ab一样吗?如果是这样,为什么a甚至存在?它看起来相当复杂,因为typeof(a)产生“Array{Array{Float64,N} where N,1}”。where在这里做什么?

arrays julia

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

选择分组数据框中每个组的第 n 个元素

假设我创建以下数据框

using DataFrames
df = DataFrame(A = rand(500), B = repeat(1:10, inner=50), C = 1:500)
Run Code Online (Sandbox Code Playgroud)

我可以做一个groupby

grouped_df = groupby(df,"B")
Run Code Online (Sandbox Code Playgroud)

我最终会分成 10 组。例如,我如何选择每组的第三个元素,并将它们组合成一个新的数据框?也就是说,我想要一个 10 行的新数据框,每行是每个组的第三个元素?

我调查过combine,但找不到解决方案。我可以得到提示吗?

dataframe julia

3
推荐指数
1
解决办法
180
查看次数

这个"无"在Python中的.get()中做了什么?

我正在尝试通过学习Python的艰难方式来学习Python.我现在正在练习39并且有一个简单的问题.我试图在线搜索但找不到任何答案.这是练习中的代码:

# create a mapping of state to abbreviation
states = {
    'Oregon': 'OR',
    'Florida': 'FL',
    'California': 'CA',
    'New York': 'NY',
    'Michigan': 'MI'
}

# create a basic set of states and some cities in them
cities = {
    'CA': 'San Francisco',
    'MI': 'Detroit',
    'FL': 'Jacksonville'
}

print '-' * 10
# safely get a abbreviation by state that might not be there
state = states.get('Texas', None)

if not state:
    print "Sorry, no Texas."

# get a city with a …
Run Code Online (Sandbox Code Playgroud)

python

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

标签 统计

julia ×8

python ×3

dataframe ×2

memory ×2

vectorization ×2

arrays ×1

python-2.7 ×1

r ×1