标签: julia

将 Julia Dataframe 列中的特定值替换为随机值

我正在寻找一种用随机数替换 Dataframe 列中的值的方法。它们在执行替换的每一行中都应该不同。

\n

例如,用"X"从中抽取的随机数替换100:120从范围

\n
julia> df = DataFrame(:a=>[1,2,"X","X",5,"X"],)\n6\xc3\x971 DataFrame\n\xe2\x94\x82 Row \xe2\x94\x82 a   \xe2\x94\x82\n\xe2\x94\x82     \xe2\x94\x82 Any \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82 1   \xe2\x94\x82 1   \xe2\x94\x82\n\xe2\x94\x82 2   \xe2\x94\x82 2   \xe2\x94\x82\n\xe2\x94\x82 3   \xe2\x94\x82 X   \xe2\x94\x82\n\xe2\x94\x82 4   \xe2\x94\x82 X   \xe2\x94\x82\n\xe2\x94\x82 5   \xe2\x94\x82 5   \xe2\x94\x82\n\xe2\x94\x82 6   \xe2\x94\x82 X   \xe2\x94\x82\n\n* Replacing X with random values in 100:120 *\n\njulia> df\n6\xc3\x971 DataFrame\n\xe2\x94\x82 Row \xe2\x94\x82 a   \xe2\x94\x82\n\xe2\x94\x82     \xe2\x94\x82 Any \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82 1   \xe2\x94\x82 1   \xe2\x94\x82\n\xe2\x94\x82 2   \xe2\x94\x82 2   \xe2\x94\x82\n\xe2\x94\x82 3   \xe2\x94\x82 103 \xe2\x94\x82\n\xe2\x94\x82 4   \xe2\x94\x82 110 \xe2\x94\x82\n\xe2\x94\x82 5 …
Run Code Online (Sandbox Code Playgroud)

dataframe julia dataframes.jl

13
推荐指数
2
解决办法
849
查看次数

如何删除julia中的一行矩阵

在matlab中,删除矩阵A的第二行是

A(2,:) = [];

如何删除julia中的一行矩阵?我试着用A(2,:) = [].但我失败了.如何解决这个问题呢?

matlab julia

12
推荐指数
3
解决办法
7301
查看次数

类似Fortran的数组,如Julia中的FArray(Float64,-1:1,-7:7,-128:512)

一般来说,Julia的基于1的数组是一个很好的决定,但有时候希望有类似Fortran的数组,其索引跨越some的某些子范围:

julia> x = FArray(Float64, -1:1,-7:7,-128:512)
Run Code Online (Sandbox Code Playgroud)

哪里有用:

在教程中伴随着"双曲偏微分方程的数值解"一书的代码中.John A. Trangenstein这些负指数被强烈用于鬼细胞的边界条件.对于Clawpack(代表"保护法律包"),教授也是如此.Randall J. LeVeque  http://depts.washington.edu/clawpack/  还有许多其他代码,这些指数很自然.因此,这种辅助类对于快速翻译这些代码是有用的.

我刚开始实施这样一种辅助类型,但由于我对Julia很新,所以我非常感谢你的帮助.

我开始时:

type FArray
    ranges
    array::Array
    function FArray(T, r::Range1{Int}...)
        dims = map((x) -> length(x), r)
        array = Array(T, dims)
        new(r, array)
    end
end
Run Code Online (Sandbox Code Playgroud)

输出:

julia> include ("FortranArray.jl")
julia> x = FArray(Float64, -1:1,-7:7,-128:512)
FArray((-1:1,-7:7,-128:512),3x15x641 Array{Float64,3}:
[:, :, 1] =
6.90321e-310  2.6821e-316   1.96042e-316  0.0  0.0  0.0  9.84474e-317  …  1.83233e-316  2.63285e-316  0.0           9.61618e-317  0.0        
6.90321e-310  6.32404e-322  2.63285e-316  0.0  0.0  0.0  2.63292e-316     2.67975e-316
...
[:, :, 2] =
...
Run Code Online (Sandbox Code Playgroud)

因为我对朱莉娅来说是全新的,所以任何能够提高效率的建议都会受到高度赞赏. …

arrays julia

12
推荐指数
1
解决办法
536
查看次数

因子函数在Python中起作用,为Julia返回0

我在Python中定义了一个阶乘函数如下:

def fact(n):
    if n == 1:
        return n
    else:
        return n * fact(n-1)

print(fact(100))
Run Code Online (Sandbox Code Playgroud)

如下朱莉娅:

function fact(n)
    if n == 1
        n
    else
        n * fact(n-1)
    end
end

println(fact(100))
Run Code Online (Sandbox Code Playgroud)

python程序返回一个非常大的数字,用于评估100(如预期的那样).Julia返回0.使用较小的数字(如10)它们都可以工作.

我有两个问题:

  1. 为什么Python处理这个没关系,朱莉娅没有.
  2. 为什么Julia不会抛出错误而只是打印0?

python julia

12
推荐指数
3
解决办法
2595
查看次数

Julia中的原始文字字符串

在Python中,可以编写r"a\nb"以防止将\n其解释为换行符的转义序列.

朱莉娅有类似的东西吗?那么字符串插值怎么样"$variable",有没有办法防止呢?

我知道一个可以简单的写"a\\nb""\$variable"在朱莉娅,但我想写了很多的LaTeX的字符串,而不必关心正确的逃生每一个反斜杠\和美元$字符...

(在Julia中,r"..."创建一个正则表达式.)

string escaping string-literals julia

12
推荐指数
2
解决办法
3200
查看次数

Julia @evalpoly宏与varargs

我正在尝试使用Julia的@evalpoly宏.当我手动提供系数时,它可以工作,但我一直无法弄清楚如何通过数组提供这些系数

julia> VERSION
v"0.3.5"

julia> @evalpoly 0.5 1 2 3 4
3.25

julia> c = [1, 2, 3, 4]
4-element Array{Int64,1}: 
 1
 2
 3
 4

julia> @evalpoly 0.5 c
ERROR: BoundsError()

julia> @evalpoly 0.5 c...
ERROR: BoundsError()

julia> @evalpoly(0.5, c...)
ERROR: BoundsError()
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

看到这个问题的好答案后添加

在我玩这些答案之前,我还没有看到过一个微妙的东西.该z参数@evalpoly可以是一个变量,但系数预计将文字

julia> z = 0.5
0.5

julia> @evalpoly z 1 2 3 4
3.25

julia> @evalpoly z c[1] c[2] c[3] c[4]
ERROR: c not defined
Run Code Online (Sandbox Code Playgroud)

查看最后一个命令的扩展输出,可以看出确实是这样的情况,z被分配给扩展中的变量,但系数被字面插入到代码中.

julia> macroexpand(:@evalpoly z c[1] …
Run Code Online (Sandbox Code Playgroud)

julia

12
推荐指数
3
解决办法
685
查看次数

地图,在朱莉娅用`|>`减少

在R中,dyplr您拥有%>%允许您将函数输出传递给新函数的运算符,从而无需存储中间值.在julia中,您可以通过使用|>运算符实现非常相似的功能.

用法示例

2 |> log |> sqrt 
Run Code Online (Sandbox Code Playgroud)

对我而言,这比阅读更好sqrt(log(2)).特别是当链条变得很长时.我想用这个语法,但也对map,reduce型功能朱莉娅.

建立

from = "abcdefghijklmnopqrstuvwxyz"
to   = "cdefghijklmnopqrstuvwxyzab"
trans = "g fmnc wms bgblr rpylqjyrc gr zw fylb <>"
d = {from[i] => to[i] for i = 1:26}
d[' '] = ' '
Run Code Online (Sandbox Code Playgroud)

什么有效

map(x -> d[x], filter(x -> isalpha(x) || isspace(x), trans))
Run Code Online (Sandbox Code Playgroud)

这样可行,但它读起来并不像我希望的那样好.另一种方法是将中间结果存储到变量中,但这似乎也很冗长:

res1 = filter(x -> isalpha(x) || isspace(x), trans)
map(x -> d[x], res1)
Run Code Online (Sandbox Code Playgroud)

我更喜欢什么

R语法与此类似:

trans |> 
  filter(x …
Run Code Online (Sandbox Code Playgroud)

julia

12
推荐指数
2
解决办法
2565
查看次数

如何获取Julia对象的字段

给定复合类型的Julia对象,如何确定其字段?

如果你在REPL中工作,我知道一个解决方案:首先你通过调用找出对象的类型typeof,然后输入help mode(?),然后查找类型.是否有更多的程序化方法来实现同样的目标?

types field object julia

12
推荐指数
2
解决办法
6991
查看次数

Julia:Int与Int8对比Int64

假设我有一个n只能输入值的整数[0, 10].我应该声明它n::Int是关于它的一般性,n::Int8还是n::UInt8简约或n::Int6464位系统?

请说明新手的原因,例如风格,表现.

背景:我特林学习朱莉娅并迅速迷失在类的字眼type,immutable,syntactic sugar!我想我读过这个:https://docs.julialang.org/en/release-0.5/manual/integers-and-floating-point-numbers/

types julia

12
推荐指数
1
解决办法
1097
查看次数

朱莉娅(1.3)中具有斐波那契数列的多线程并行性能问题

我正在尝试Julia 1.3使用以下硬件的多线程功能:

Model Name: MacBook Pro
Processor Name: Intel Core i7
Processor Speed:    2.8 GHz
Number of Processors:   1
Total Number of Cores:  4
L2 Cache (per Core):    256 KB
L3 Cache:   6 MB
Hyper-Threading Technology: Enabled
Memory: 16 GB
Run Code Online (Sandbox Code Playgroud)

运行以下脚本时:

function F(n)
if n < 2
    return n
    else
        return F(n-1)+F(n-2)
    end
end
@time F(43)
Run Code Online (Sandbox Code Playgroud)

它给我以下输出

2.229305 seconds (2.00 k allocations: 103.924 KiB)
433494437
Run Code Online (Sandbox Code Playgroud)

但是,当运行下面的代码从Julia页面复制的关于多线程的代码时

import Base.Threads.@spawn

function fib(n::Int)
    if n < 2 …
Run Code Online (Sandbox Code Playgroud)

multithreading fibonacci julia

12
推荐指数
1
解决办法
232
查看次数