小编Mic*_*ard的帖子

julia-0.6中函数定义中的`where`

我试图在阅读发行说明的基础上理解Julia v0.6中的新类型系统.

任何人都可以告诉我什么

inv(M::Matrix{T}) where T <: AbstractFloat
Run Code Online (Sandbox Code Playgroud)

给了我与使用经典不同的东西

inv{T<:AbstractFloat}(M::Matrix{T})
Run Code Online (Sandbox Code Playgroud)

julia

25
推荐指数
1
解决办法
3079
查看次数

在朱莉娅中输入参数和内部构造函数0.6

我对使用where语法如何使用julia 0.6中的抽象类型限制参数类型的类型参数表示怀疑.

考虑一个示例,我想创建一个采用整数的参数化抽象类型,并定义从中继承的结构.如果我尝试:

abstract type AbstractFoo{T} where T<: Integer end
Run Code Online (Sandbox Code Playgroud)

它失败了,但我可以使用非where语法

abstract type AbstractFoo{T<:Integer} end
Run Code Online (Sandbox Code Playgroud)
  1. 这是推荐的格式吗?

鉴于此,我如何实现我的子类型

mutable struct Foo{T} <: AbstractFoo{T} where T <: Integer
   bar::T
end
Run Code Online (Sandbox Code Playgroud)

也失败了(Invalid subtyping).我可以where再次绕过语法

mutable struct Foo{T<:Integer} <: AbstractFoo{T}
   bar::T
end
Run Code Online (Sandbox Code Playgroud)

但这似乎是多余的(因为T已经被限制为整数).我可以把它留下来吗?:

mutable struct Foo{T} <: AbstractFoo{T}
    bar::T
end
Run Code Online (Sandbox Code Playgroud)

最后,随着内部构造函数语法的弃用,有没有办法将内部构造函数定义为:

mutable struct Foo{T} <: AbstractFoo{T}
    bar::T
    Foo{T}(x::T) where T = new(x)
end
Run Code Online (Sandbox Code Playgroud)

这使得Foo(3)不可能 - 要求我使用Foo{Int}(3).这是故意还是有更好的解决方法?编辑:我想对于内部构造函数问题,我总是可以定义一个外部构造函数Foo(x::T) where {T} = Foo{T}(x).

julia

7
推荐指数
1
解决办法
943
查看次数

为什么矩阵上的`sum`返回Matrix,而不是Vector?

如果我做

mat = rand(8,8)
sum(mat, 1)
Run Code Online (Sandbox Code Playgroud)

返回类型是具有单行sum(mat, 2)的Matrix ,而给出具有单列的Matrix.这让我感到惊讶,因为单身尺寸通常会下降0.5,所以我希望两种操作的返回类型都是Vector.为什么单身尺寸没有掉落?

我可能期望这是为了保留方向(例如sum(mat, 1)是行Vector),但0.6上的行为是相同的,它具有明确的1-d RowVectors,因此这似乎不是解释.

谢谢!

julia

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

从元组向量到向量元组

在 Julia 中,许多事物都表示为小元组数组,例如Points。但有时您希望元素分开,例如提取 x 和 y 坐标进行绘图 - 例如拥有一个数组元组。您可以部分使用zip

pts = [(1,2), (1,3), (2,3), (2,2)]
a,b = collect(zip(pts...))
Run Code Online (Sandbox Code Playgroud)

这会导致元组的元组,尽管您可以

av = [a...]
bv = [b...]
Run Code Online (Sandbox Code Playgroud)

有没有更方便的方法来进行此操作?

arrays tuples julia

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

gitkraken repo 上的“找不到兼容的存储库”错误

我有一个多年来一直使用的存储库,通过 GitKraken 使用。我只是使用 CLI 为repo分配了一个标签(使用git tag -a v0.7.1 -m "my version 0.7.1" ea27f3b3ab882e58cbb5995f5d8638a200676a43then代码git push --tags),之后 GitKraken 将不会打开它。它说那里没有存储库,并询问我是否要初始化一个新的存储库。

我的任何其他回购都没有问题。此外,这个 repo 可以从命令行正常工作。我试过手动删除文件夹,然后在同一个地方从 github 再次克隆它,但它没有帮助。我在git reset --hard本地也试过,但没有用。一些谷歌搜索会在深度嵌套的文件上显示长路径名称之类的东西,但我没有(而且我使用的是 MacOS 而不是 Windows)。

有任何想法吗?

git gitkraken

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

在R中的多面板图中更改绘图面板

我希望能够在R中使用多个图来跟踪运行模拟.简单的方法是创建一个多面板图(在我的情况下我只是使用par(mfrow = c(2,2))),然后依次绘制四个图中的每一个.问题是它必须每次完全重绘图,每次函数到达最后一个(第4个)面板时,整个窗口都会被重绘.我想要的是能够转回到例如第一个面板,然后在前一个面板上绘制下一个点.如果这是单独的窗口,我可以在它们之间进行更改dev.set(),但面板有类似的东西吗?

plot r

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

确定哪些行(或列)在稀疏矩阵中具有值

我需要识别在大型稀疏布尔矩阵中定义了值的行(/列).我想用它来1. view用那些行/列切片(实际)矩阵; 2.切片(/ view)矢量和矩阵,其尺寸与矩阵的边距相同.即结果应该是索引/ Bools的Vector或(最好)迭代器.

我试过了明显的事:

a = sprand(10000, 10000, 0.01)
cols = unique(a.colptr)
rows = unique(a.rowvals)
Run Code Online (Sandbox Code Playgroud)

但每一种把我的机器上像20ms的,可能是因为他们所分配的1MB左右(至少他们分配colsrows).这是一个性能关键的功能,所以我希望优化代码.Base代码似乎有一个nzrange稀疏矩阵的迭代器,但我不容易看到如何将它应用于我的情况.

是否有建议的方法这样做?

第二个问题:我还需要对我的稀疏矩阵的视图执行此操作 - 这会是类似的x = view(a,:,:); cols = unique(x.parent.colptr[x.indices[:,2]])还是有专门的功能?稀疏矩阵的视图似乎很棘手(参见https://discourse.julialang.org/t/slow-arithmetic-on-views-of-sparse-matrices/3644 - 不是交叉帖子)

非常感谢!

sparse-matrix julia

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

Julia:创建(1,n)数组的简短语法

在Matlab中我可以写:

[0:n]
Run Code Online (Sandbox Code Playgroud)

得到一个数组(1,n).对于n = 2,我得到:

  0     1     2  
Run Code Online (Sandbox Code Playgroud)

如何在朱莉娅做同样的事情?目的是获得相同类型的数组(1,3).

我知道我可以写[0 1 2],但我想要一些像Matlab一样的通用.

julia

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

茱莉亚的情节:缺乏广泛且容易理解的文档吗?

作为一名物理学专业的学生,​​我绝不会擅长编码,但足以满足对模型进行建模的需要。绘图总是会导致超级烦人。如果需要,在Julia文档中查找内容非常容易。通过绘制,这是一个完全不同的故事。只是没有好的资源来学习如何处理可用的绘图程序包。

我迷路了。例如,有关于PyPlot的适当文档,但仅针对Python,并且该代码在Julia中不起作用。然后有几个例子显然不能回答我的所有问题。我想念什么吗?我感到很愚蠢,但也知道我周围的每个人也花费大量时间进行绘图。

有什么建议要查找东西吗?

提前致谢

matplotlib julia plots.jl

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

标签 统计

julia ×7

arrays ×1

git ×1

gitkraken ×1

matplotlib ×1

plot ×1

plots.jl ×1

r ×1

sparse-matrix ×1

tuples ×1