小编U26*_*647的帖子

Julia 是否需要矢量化来加速计算?

在Python中,通常建议对代码进行向量化以使计算更快。例如,如果您想计算两个向量的内积,例如ab,通常

代码A

c = np.dot(a, b)
Run Code Online (Sandbox Code Playgroud)

代码B

c = 0
for i in range(len(a)):
    c += a[i] * b[i]
Run Code Online (Sandbox Code Playgroud)

但在 Julia 中,有时矢量化似乎没有那么有帮助。我将'*dot视为矢量化版本,并将显式for循环视为非矢量化版本,并得到以下结果。

using Random
using LinearAlgebra

len = 1000000
rng1 = MersenneTwister(1234)
a = rand(rng1, len)
rng2 = MersenneTwister(12345)
b = rand(rng2, len)


function inner_product(a, b)
    result = 0
    for i in 1: length(a) 
        result += a[i] * b[i] 
    end
    return result
end


@time a' * b
@time dot(a, …
Run Code Online (Sandbox Code Playgroud)

vectorization python-3.x julia

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

Julia:如何在保留顺序的同时重塑数组?

Python 中有一个类似的问题,但我问的是 Julia 版本。

我有一个 shape 的多维数组img = (3, 64, 64),它表示第一维为 RGB 的图像。我想用来plt.imshow(img)在 Jupyter Notebook 中显示图像,但plt.imshow采用形状为 的数组(64, 64, 3)。所以,

是否有任何内置函数可以img 在不改变像素顺序的情况下进行转换?

注意:reshape(img, (64, 64, 3))不起作用。我已经尝试过了,但没有得到原始图像。

我写了一个嵌套for循环来说明我想要的:

# Suppose img has been created
img_reshaped = zeros(size(img)[2], size(img)[3], size(img)[1])
for i in 1: size(img)[2]
    for j in 1: size(img)[3]
        for k in 1: size(img)[1]
            img_reshaped[i,j,k] = img[k,j,i]
        end
    end
end
plt.imshow(test_img)
Run Code Online (Sandbox Code Playgroud)

上面的循环for给出

在此输入图像描述

同时reshape(img, (64, …

arrays reshape julia

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

标签 统计

julia ×2

arrays ×1

python-3.x ×1

reshape ×1

vectorization ×1