考虑Julia中的三值算子
julia> x = 1 ; y = 2
julia> println(x < y ? "less than" : "not less than")
less than
问题:有办法省略语句中的:部分吗?相当于
if condition
# dosomething
end
如果不满足条件,就不应该做任何事情。
注:我研究了答案,但没有出来,即使是在相关的问题(,)。
我正试图在Julia中做这个Python代码所做的工作。(从合并值大于7的两个列表中查找所有对。)
#Python
def sum_is_large(a, b):
return a + b > 7
l1 = [1,2,3]
l2 = [4,5,6]
l3 = [(a,b) for a in l1 for b in l2 if sum_is_large(a, b)]
print(l3)
在“朱莉娅”中,没有关于清单理解的if。如果我使用filter(),我不确定是否可以传递两个参数。所以我最好的建议是:
#Julia
function sum_is_large(pair)
关于ORM for Julia的问题,我想知道如何在Julia中使用SQLAlchemy,因为SQLAlchemy使用了很多对象/类型魔术来加载和持久化数据。你有任何关于如何在SQLAlchemy上下文中使用Julia结构的提示吗? (很抱歉,我是Julia的新手,只是在这一点上四处看看,我目前还不能想出一些开始的代码-作为MCVE)。
我有一个在T类型上参数化的抽象容器AbstractContainer,它指示容器中的内容的类型。然后,每个子类型(在本例中为FloatContainer)指定容器中的实际内容(在本例中为Float64)。 理想情况下,如果只有容器类型,我会有一种方法来获取容器中的类型。这样我就可以在另一个结构中使用它(在这个例子中是MultiplyBy) 我在考虑用类似于Julia的内部eltype函数的方式来做这件事,但是我不能让它工作。我总是得到一个方法错误(有关详细的错误消息,请参阅最后的代码片段) abstract type AbstractContainer{T} end
gettype(::
我有一些Julia代码,其中我使用readdlm函数打开了大量文件。我的代码如下所示:
for file in large_list_of_files
open(file) do filehandle
data = readdlm(filehandle)
end
#Do some data processing and store results
end
当我运行这个命令时,我得到了这个错误:
LoadError: SystemError: opening file <filename>: Too many open files
while
我还有一个关于朱莉娅垃圾收集的问题。下面是一个很小的例子:
function OscarTheGrouch()
A = rand(Float32, 20000, 20000);
A = 0;
gc();
end
调用OscarTheGrouch()会使内存使用量增加1.6GB。调用gc()之后,它将下降1.6GB。
相反,只需在全局范围内执行函数中的代码,即执行
A = rand(Float32, 20000, 20000);
A = 0;
gc();
在执行之前和之后,RAM的使用保持不变。
被证明只是由于中间结果以ans形式存储的事实。但是,调用whos()后调用O
首先,我不得不说我对并行计算完全陌生(对计算机科学几乎一无所知),所以我对“工作者”或“进程”之类的东西的理解非常有限。但是,我确实有一个关于运行一个简单的for循环的问题,该循环可能在并行迭代之间没有依赖关系。
假设我想要执行以下操作:
for N in 1:5:20
println("The N of this iteration in $N")
end
如果我只是想让这些消息出现在屏幕上,而出现的顺序并不重要,那么如何在Julia 0.6中实现这一点,并在Julia 0.7 (因此是1.0)中供将来参考呢?
我是朱莉娅的新手。我想要写的代码,为每一个向量,输出一个新的向量,其名称取决于输入向量的名称。
例如,下面的代码工作
a = ones(10)
b = ones(10)
for var in [a, b]
global log_var = log.(var)
end
但我希望得到的向量命名为log_a和log_b (而不是让循环覆盖log_var)。我原以为这会很简单,但读了几本关于朱莉娅当地人的教程后,我还是迷路了!有什么简单的方法吗?
如果这个问题不清楚,我将描述我将如何在Stata中这样做,我对此比较熟悉:
clear
set obs 10
gen a = 1
gen
当前获取包含所有给定元素组合的列名的数组的最好方法是什么?与R中的函数expand.grid()最相似的是所有关于这个问题的讨论,要么是关于这个问题的略微不同的公式,要么是在非常旧的Julia版本的日子里进行的。目前我发现的最合理的解决方案是: using DataFrames
xy = [[x,y] for x in 0:0.25:1 for y in 0:0.25:1]
xy_array = permutedims(reshape(hcat(xy...), (length(xy[1]), length(xy))))
df = DataFrame(x = xy_array[:,1], y
我有一个非常简单的问题。是否可以在Julia中按需加载模块。也就是说,是否可以在实际需要时加载模块,而不是在顶层加载“解析时”。
我想到的用例场景是,我有一些代码可以使用PyPlot进行一些绘图,但是代码并不总是被执行。
目前,这意味着我在顶层有一个像using PyPlot这样的语句,它需要相当长的时间来加载。
(是的,我知道,不应该经常让朱莉娅重新开始.但无论如何,这是一个恼人的问题)
是否有一种方法可以确保只在实际需要时加载PyPlot?最简单的方法是将using PyPlot包含在实际进行绘图的函数中。
function my_plot()
using PyPlot
p
学习新的julia语法和作用域的速度很慢。
在Julia v1.1.1中
下面的MWE抛出错误"ff not defined“的原因是什么?
N = 5;
typp = "b";
mu = 2;
function bigfun()
function f(u,mu)
ee = mu*u;
return ee
end
function g(uv,mu)
ee = (mu^2)*uv
return ee;
end
while 1 == 1
u = ones(N);
if typp == "a
我正在尝试编译Julia的自定义系统映像,以加快一些库的加载速度,特别是Gadfly。我尝试过,但Julia抱怨未定义的路径(它使我需要每个单独的库),并且在链接所有这些库之后,抱怨未定义的变量STDOUT和STDERR。如果我不使用userimg.jl文件,编译就能完美地工作。
我第一次尝试userimg.jl文件时只使用了
include("/home/clavero/.julia/v0.4/Gadfly/src/Gadfly.jl")
但它抱怨path中没有库,错误消息如下
Base.ArgumentError(msg="Codecs not found in p
在Fortran中,我们知道我们可以在模块中定义一个全局变量(使用私有属性),这样我们就可以使用模块中的子程序来设置或更改该变量的值。见下文,
module Mod
integer, parameter :: r8=selected_real_kind(15,9)
real(kind=r8), private, save :: var
contains
subroutine f(x)
real(kind=r8) :: x
var = 2.0_r8*x
end subroutine f
end
正如我们所看到的,我们可以调用f(x)并将模块中的var设置为2x。
在朱莉娅看来,
module M
我有一个用户定义的结构:
using Parameters
@with_kw struct TypeSingle
id::Int
x::Union{Int32, Missing} = missing
flag::Bool = true
end
@with_kw struct TypeAll
A = TypeSingle(id=01,x=0.1,flag=false)
B = TypeSingle(id=02)
# this continues on until
Z = TypeSingle(id=26,x=1.3)
end
关于我想用
在运行Pkg.update()之后,我遇到了以下关于IJulia安装的错误消息:
WARNING: Module BinDeps uuid did not match cache file
===============================[ ERROR: IJulia ]================================
LoadError: __precompile__(true) but require failed to create a precompiled cache file
while loading /home/om/.julia/v0.4/IJ
我对Julia还比较陌生,并致力于移植一些C函数来检查速度差异。我正在努力解决的一个问题是变量的范围。具体来说,有时候Julia中的函数调用会覆盖局部变量,而其他时候则不会。例如,下面是一个计算最小生成树的函数:
function mst(my_X::Array{Float64})
n = size(my_X)[1]
N = zeros(Int16,n,n)
tree = []
lv = maximum(my_X)+1
my_X[diagind(my_X)] .=lv
indexi = 1
for ijk in 1:(n-1)
关于Julia中的布尔比较,我有一个简单的问题。如何将下面的Matlab代码转换为Julia?
Matlab:
% create parameters
o = -3;
mat = [65 -4; 65 -3; 65 -2]
% determine which rows of matrix have column 2 less than o AND column 1 equal to 65.
result = (o < mat(:,2) & mat(:,1) == 65)
我在朱莉娅身上试过以下几种方法:
# create parameters
o = -3
mat = zero