小编ten*_*ten的帖子

在 Julia 中制作二维晶格

语境

\n

让我们考虑 5 x 5 格子,每个点索引为 (1,1),(1,2),...(1,5),(2,1),...,(5,5),并且称此为格子L

\n

我想做的事

\n

我想制作一个 5 x 5 矩阵,每个元素都有一个值来指示每个点,L如下所示:

\n
5\xc3\x975 Matrix{Vector{Int64}}:\n [1, 1]  [1, 2]  [1, 3]  [1, 4]  [1, 5]\n [2, 1]  [2, 2]  [2, 3]  [2, 4]  [2, 5]\n [3, 1]  [3, 2]  [3, 3]  [3, 4]  [3, 5]\n [4, 1]  [4, 2]  [4, 3]  [4, 4]  [4, 5]\n [5, 1]  [5, 2]  [5, 3]  [5, 4]  [5, 5]\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试过的

\n

我刚刚尝试了以下操作:

\n
X1 = …
Run Code Online (Sandbox Code Playgroud)

arrays vector matrix multidimensional-array julia

9
推荐指数
3
解决办法
326
查看次数

一个快速编码技巧以某种方式最终使 Julia 中的代码变慢

我听说意识到类型稳定性对 Julia 编程的高性能有很大贡献,所以我尝试测量将类型不稳定的函数重写为类型稳定版本时可以节省多少时间。正如很多人所说,我认为类型稳定的编码当然比类型不稳定的编码具有更高的性能。然而,结果却相反:

# type-unstable vs type-stable

#?type-unstable
function positive(x)
    if x < 0
        return 0.0
    else
        return x
    end
end

# type-stable
function positive_safe(x)
    if x < 0
        return zero(x)
    else
        return x
    end
end

@time for n in 1:100_000_000
    a = 2^( positive(-n) + 1 )
end

@time for n in 1:100_000_000
    b = 2^( positive_safe(-n) + 1 )
end
Run Code Online (Sandbox Code Playgroud)

结果:

0.040080 seconds
0.150596 seconds
Run Code Online (Sandbox Code Playgroud)

我无法相信这。我的代码中是否有一些错误?或者这是事实?

任何信息,将不胜感激。

语境

  • 操作系统和版本:Windows 10
  • 浏览器和版本:Google Chrome 90.0.4430.212?官方版本??64 位)
  • JupyterLab 版本:3.0.14

@btime 结果 …

optimization types julia

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

在 Julia 中定义任意维度的多维数组

语境

\n

这个问题与这个有关。

\n

在 Julia 中,我想创建一个 5 x 5 的二维数组,其中 (i, j) 元素如下所示[i,j]

\n
5\xc3\x975 Matrix{Vector{Int64}}:\n [1, 1]  [1, 2]  [1, 3]  [1, 4]  [1, 5]\n [2, 1]  [2, 2]  [2, 3]  [2, 4]  [2, 5]\n [3, 1]  [3, 2]  [3, 3]  [3, 4]  [3, 5]\n [4, 1]  [4, 2]  [4, 3]  [4, 4]  [4, 5]\n [5, 1]  [5, 2]  [5, 3]  [5, 4]  [5, 5]\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试使用数组理解

\n
N = 5\nL_2 = [[x1,x2] …
Run Code Online (Sandbox Code Playgroud)

arrays vector matrix multidimensional-array julia

5
推荐指数
2
解决办法
280
查看次数

Julia 中局部变量不受支持的 `const` 声明

在 Julia 中,我定义了一个带有一些参数的函数x,y,z,每个参数都不会在函数内部的过程中发生变化。为了优化我的计划,我打算做x,y,zconst。我是这样做的:

function myFunc(x,y,z)
  const x = x; const y = y; const z = z;
  
  # algorithm using x,y,z
  # ...
  # ...

end
Run Code Online (Sandbox Code Playgroud)

但是,我在下面发现了一个错误:

syntax: unsupported `const` declaration on local variable around In[55]:36
Run Code Online (Sandbox Code Playgroud)

怎么了?

任何信息,将不胜感激。

variables types constants function julia

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

用数组填充数组不能按我预期的那样工作

我想制作一个多数组,其条目是多数组,并且想将某个数组一个一个地推入条目中。

例如,我创建了 2 x 3 Matrixarr并尝试用由randn(4,4).

arr = fill(Matrix{Float64}[], 2, 3)
push!(arr[1,1],randn(4,4))
push!(arr[1,2],randn(4,4))
println(arr[1,1])
println(arr[1,2])
println(arr[1,3])

Run Code Online (Sandbox Code Playgroud)

然而,结果是arr(除了 [1,1] 和 [1,2])的所有条目都填充了相同的randn(4,4),而不仅仅是 [1,1] 和 [1,2] 填充了randn(4,4)

[[-0.15122805007483328 0.6132236453930502 -0.9090110366765862 1.2589924202099898; -1.120611384326006 -0.9083935218058066 0.7252290006516056 1.0970416725786256; -0.19173238706933265 1.3610525411901113 -0.05258697093572793 0.7776085390912448; 0.18491459001855373 -2.0537142669734934 0.3482557186126859 0.0047622478008474845], [0.23422967703060255 -0.51986351753462 0.45947166573674303 0.31316899298864387; 0.3704450103622709 -0.8186574197233013 -0.9990329964554037 -0.8345957519924763; 0.56641529964098 -0.8393435538481216 -0.6379336546939682 1.1843452368116358; 0.9435767553275002 0.0033471181565433127 -1.191611491619908 1.3970554854927264]]
[[-0.15122805007483328 0.6132236453930502 -0.9090110366765862 1.2589924202099898; -1.120611384326006 -0.9083935218058066 0.7252290006516056 1.0970416725786256; -0.19173238706933265 1.3610525411901113 -0.05258697093572793 0.7776085390912448; 0.18491459001855373 -2.0537142669734934 …
Run Code Online (Sandbox Code Playgroud)

arrays julia

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

在 Julia 中函数式地创建任意大小的元组

在 Julia 中创建元组的常见方法如下:

n = 5
t2 = (n,n) # t2 = (5,5)
t3 = (n,n,n)# t3 = (5,5,5)

Run Code Online (Sandbox Code Playgroud)

我想从功能上制作一个任意大小的元组。

n = 5
someFunction(n,size) = ???

t10 = someFunction(n,10) # t10 = (5,5,5,5,5,5,5,5,5,5) 
Run Code Online (Sandbox Code Playgroud)

我怎样才能意识到这一点?

任何信息,将不胜感激。

tuples function julia

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

如何检查“jupyter/datascience-notebook”中安装了哪些 Julia 软件包?

我在 Julia x Jupyter 项目中,我选择使用jupyter/datascience-notebook Docker Image,其中包含 jupyterlab 和 Julia 环境。

我想知道 Julia 预安装了哪些软件包jupyter/datascience-notebook,并知道我需要手动安装哪些额外软件包。

我阅读了datascience-notebook 的 Dockerfile以了解jupyter/datascience-notebook映像中安装了哪些包,但我找不到用于指定 julia 包的行。

# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
ARG OWNER=jupyter
ARG BASE_CONTAINER=$OWNER/scipy-notebook
FROM $BASE_CONTAINER

LABEL maintainer="Jupyter Project <jupyter@googlegroups.com>"

# Fix DL4006
SHELL ["/bin/bash", "-o", "pipefail", "-c"]

USER root

# Julia installation
# Default values can be overridden at build time
# (ARGS are in lower …
Run Code Online (Sandbox Code Playgroud)

julia docker jupyter-notebook jupyter-lab

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

Julia 代码优化:向量计算和求和

我在一个 Julia 项目中,我想oneAttempt在下面的代码中优化我的功能。

下面对我的代码进行简要说明:

  • 函数oneAttmept实现了一定的递归算法,返回终端结果。
  • 变量f是通过我algorithm part在下面的代码中编写的算法更新的变量(我会在这个问题中省略这部分)。
  • 函数oneAttempt将在 for 循环下多次调用(超过 1000 次)。
function oneAttempt()
            n = 30
            m = 900

            x = rand(Normal(), n, n)
            A = ones(n, n) * sum(sum(x, dims = 1))
    
            # f would be passed to the algorithm below.
            # f0 is the initial value of f
            f0 = ones(n, n) + x - (1 / m) * A
            f = copy(f0)
            o = zeros(n, n) …
Run Code Online (Sandbox Code Playgroud)

arrays algorithm optimization julia

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

Docker:卷安装目录出现“权限被拒绝”错误

我写了一个docker-compose.yml这样的:

version: "3"
services:
  notebook:    
    image: jupyter/datascience-notebook
    
    ports:
      - "8888:8888"
    volumes: 
      - jupyterlabPermanent:/hahaha
    environment:
      JUPYTER_ENABLE_LAB: "yes"
      TZ: "Asia/Tokyo"
    command:
      start-notebook.sh --NotebookApp.token=''
volumes:
  jupyterlabPermanent:
Run Code Online (Sandbox Code Playgroud)

让我先说清楚舞台上出现的人物有哪些。

  • \hahaha:位于根目录的容器端目录
  • jupyterlabPermanenthahaha:容器端目录挂载的卷。
  • dockerjulia_jupyterlabPermanent\_data:为卷提供安全保护的主机端目录,该目录同步位于. 的完整路径isjupyterlabPermanent中的数据。\hahahadockerjulia_jupyterlabPermanent\_data\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\dockerjulia_jupyterlabPermanent\_data

当我在目录中的 bash 上使用 touch 命令时\hahaha,我得到permission denied

# bash command line at \hahaha

(base) jovyan@4bcdaa228d9e:/hahaha$ touch test.txt
touch: cannot touch 'test.txt': Permission denied
Run Code Online (Sandbox Code Playgroud)

因此,容器中完成的每个任务都无法存储在\hahaha卷 中jupyterlabPermanent,这意味着数据保存在此环境中不起作用。

我该如何解决这个问题?我搜索了一下这个,发现我需要更改权限的配置,但我不明白。

我在 Windows 10 家庭版上使用 Docker Desktop for Windows 和 …

windows docker docker-compose docker-volume

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

无法通过 Pkg.add("something") 安装 Julia 软件包

根据这个站点,我们可以通过在 shell 上放置以下命令来安装 Julia 包:

Pkg.add("Distributions")
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

(@v1.6) pkg> Pkg.add("Distributions")
ERROR: Could not determine command
Run Code Online (Sandbox Code Playgroud)

怎么了。我使用的是 Windows10,外壳是命令提示符。

任何信息,将不胜感激。

windows cmd package julia

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