如果Julia函数返回一个数组,是返回引用还是复制?
function pass(A::Matrix)
return A
end
Run Code Online (Sandbox Code Playgroud)
一个真实的例子是reshape:
reshape(A, dims)使用与给定数组相同的数据创建一个数组,但具有不同的维度.特定类型的阵列的实现可以选择是复制还是共享数据.
实现如何确定是复制还是共享数据?
为什么按位不能切换到切换位的预期效果?参见下面的例子:
a = 5
print(bin(a))
b = ~a
print(bin(b))
Run Code Online (Sandbox Code Playgroud)
这是输出:
0b101
-0b110
Run Code Online (Sandbox Code Playgroud)
问题是为什么左边的第一个位没有切换?
考虑到Python文档说:
~x返回x的补码 - 通过将每个1切换为0而每个0切换为1得到的数字.
编辑:您是说"〜"不是简单切换位的运算符,而是它是二进制补码的运算符?如果是这样,为什么从文档中引用的句子不能说明这一点.Python文档中的上述句子并不意味着这一点.
Julia中的编码显示使用下划线作为整数位分隔符在Julia中起作用.
x = 1_000_000
Run Code Online (Sandbox Code Playgroud)
和
x = 1000000
Run Code Online (Sandbox Code Playgroud)
基本上是一回事.
但是,我无法找到相关文档,以了解更多详细信息.任何人都能指出我的意思.
数字分离字符在不同语言中也很常见吗?C++,java和Python中的分隔符是什么?
我为什么可以使用
X = randn(size(Y));
Run Code Online (Sandbox Code Playgroud)
和
X = eye(size(Y,1), size(Y,2));
Run Code Online (Sandbox Code Playgroud)
但不是
X = eye(size(Y));
Run Code Online (Sandbox Code Playgroud)
?它抛出以下错误,我不太明白:
错误:
eye没有方法匹配eye(::(Int64,Int64))
这个实验的目的是将Matlab和Julia的速度与下面的一小段代码进行比较.
首先是Matlab代码:
>> t = 5000; n = 10000; x = 1:t*n;
>> x = reshape(x, t, n);
>> tic(); y1 = sum(x(:) .* x(:)); toc()
Elapsed time is 0.229563 seconds.
>> y1
y1 =
4.1667e+22
>> tic(); y2 = trace(x * x'); toc()
Elapsed time is 15.332694 seconds.
>> y2
y2 =
4.1667e+22
Run Code Online (Sandbox Code Playgroud)
与朱莉娅对决
julia> t = 5000; n = 10000; x = 1: t*n;
julia> x = reshape(x, t, n);
julia> tic(); y1 = sum(x[:].* x[:]); toc();
elapsed …Run Code Online (Sandbox Code Playgroud) 通常,在IDE中打开并运行文件时,当前路径将是文件的驻留路径,即文件所在的位置.出于某种原因,经验告诉JUNO的Julia语言不是这样(编辑:在Windows中).
结果是,除非他们手动设置路径,否则由于文件不合理而收到多个错误.
怎么解决这个问题?
这是为什么?
如何转换Matlab代码
v = [1: n]
Run Code Online (Sandbox Code Playgroud)
pytorch?
为此编写一个完整的循环似乎效率低下.
这应该很容易找到,但我很难找到正确的关键字来实现目标.
我知道在Matlab中编写for循环通常效率不高.现在我试图用更好的选项替换嵌套的for循环.这是嵌套循环,
for i = 1: size(A,1)
for j = 1: size(B,1)
S(i,j, :) = c*(A(i,:)*a - B(j,:)*b);
end
end
Run Code Online (Sandbox Code Playgroud)
我应该使用什么操作?(我在考虑笛卡尔积的实施)
是否可以在Julia中调用嵌套的tic()和toc()?问题是我无法将我选择的计时器名称发送到toc()函数.
在Matlab中有这样的东西(我引用Matlab的帮助)
`
REPS = 1000; minTime = Inf; nsum = 10;
tic; % TIC, pair 1
for i=1:REPS
tStart = tic; % TIC, pair 2
total = 0;
for j=1:nsum
total = total + besselj(j,REPS);
end
tElapsed = toc(tStart); % TOC, pair 2
minTime = min(tElapsed, minTime);
end
averageTime = toc/REPS; % TOC, pair 1 `
Run Code Online (Sandbox Code Playgroud)