我正在寻找一种用随机数替换 Dataframe 列中的值的方法。它们在执行替换的每一行中都应该不同。
\n例如,用"X"从中抽取的随机数替换100:120从范围
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) 在matlab中,删除矩阵A的第二行是
A(2,:) = [];
如何删除julia中的一行矩阵?我试着用A(2,:) = [].但我失败了.如何解决这个问题呢?
一般来说,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)
因为我对朱莉娅来说是全新的,所以任何能够提高效率的建议都会受到高度赞赏. …
我在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)它们都可以工作.
我有两个问题:
在Python中,可以编写r"a\nb"以防止将\n其解释为换行符的转义序列.
朱莉娅有类似的东西吗?那么字符串插值怎么样"$variable",有没有办法防止呢?
我知道一个可以简单的写"a\\nb"和"\$variable"在朱莉娅,但我想写了很多的LaTeX的字符串,而不必关心正确的逃生每一个反斜杠\和美元$字符...
(在Julia中,r"..."创建一个正则表达式.)
我正在尝试使用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) 在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对象,如何确定其字段?
如果你在REPL中工作,我知道一个解决方案:首先你通过调用找出对象的类型typeof,然后输入help mode(?),然后查找类型.是否有更多的程序化方法来实现同样的目标?
假设我有一个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/
我正在尝试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)