让我们考虑 5 x 5 格子,每个点索引为 (1,1),(1,2),...(1,5),(2,1),...,(5,5),并且称此为格子L。
我想制作一个 5 x 5 矩阵,每个元素都有一个值来指示每个点,L如下所示:
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]\nRun Code Online (Sandbox Code Playgroud)\n我刚刚尝试了以下操作:
\nX1 = …Run Code Online (Sandbox Code Playgroud) 我听说意识到类型稳定性对 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)
我无法相信这。我的代码中是否有一些错误?或者这是事实?
任何信息,将不胜感激。
这个问题与这个有关。
\n在 Julia 中,我想创建一个 5 x 5 的二维数组,其中 (i, j) 元素如下所示[i,j]:
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]\nRun Code Online (Sandbox Code Playgroud)\n我尝试使用数组理解:
\nN = 5\nL_2 = [[x1,x2] …Run Code Online (Sandbox Code Playgroud) 在 Julia 中,我定义了一个带有一些参数的函数x,y,z,每个参数都不会在函数内部的过程中发生变化。为了优化我的计划,我打算做x,y,z是const。我是这样做的:
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)
怎么了?
任何信息,将不胜感激。
我想制作一个多数组,其条目是多数组,并且想将某个数组一个一个地推入条目中。
例如,我创建了 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) 在 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)
我怎样才能意识到这一点?
任何信息,将不胜感激。
我在 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 项目中,我想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) 我写了一个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 和 …
根据这个站点,我们可以通过在 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,外壳是命令提示符。
任何信息,将不胜感激。