U26*_*647 5 arrays reshape 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, 64, 3))给出
这是不希望的。
扩展 @mcabbott 的评论
\n简短回答:
\nimg_for_plot = permutedims(img, [2, 3, 1])\nRun Code Online (Sandbox Code Playgroud)\n这是帮助页面的顶部permutedims
help?> permutedims\nsearch: permutedims permutedims! PermutedDimsArray\n\n permutedims(A::AbstractArray, perm)\n\n Permute the dimensions of array A. perm is a vector specifying a permutation of length ndims(A).\nRun Code Online (Sandbox Code Playgroud)\n在你的情况下,它看起来像这样:
\njulia> img = rand(1:256, 3, 6, 6)\n3\xc3\x976\xc3\x976 Array{Int64,3}:\n[:, :, 1] =\n 42 193 60 250 215 145\n 99 193 126 36 206 123\n 210 28 190 234 186 139\n\n[:, :, 2] =\n 29 174 254 233 215 245\n 247 64 254 133 124 254\n 145 206 26 18 231 105\n\n[:, :, 3] =\n 198 120 191 181 43 209\n 74 247 225 240 30 126\n 231 163 104 24 237 18\n\n[:, :, 4] =\n 171 44 45 153 28 60\n 145 180 220 82 47 132\n 140 96 32 147 162 26\n\n[:, :, 5] =\n 246 180 221 136 158 111\n 100 186 39 155 184 152\n 112 237 11 60 222 171\n\n[:, :, 6] =\n 209 122 191 90 106 89\n 17 91 163 117 168 215\n 105 163 204 154 214 119\n\njulia> size(img)\n(3, 6, 6)\n\njulia> img_for_plot = permutedims(img, [2, 3, 1])\n6\xc3\x976\xc3\x973 Array{Int64,3}:\n[:, :, 1] =\n 42 29 198 171 246 209\n 193 174 120 44 180 122\n 60 254 191 45 221 191\n 250 233 181 153 136 90\n 215 215 43 28 158 106\n 145 245 209 60 111 89\n\n[:, :, 2] =\n 99 247 74 145 100 17\n 193 64 247 180 186 91\n 126 254 225 220 39 163\n 36 133 240 82 155 117\n 206 124 30 47 184 168\n 123 254 126 132 152 215\n\n[:, :, 3] =\n 210 145 231 140 112 105\n 28 206 163 96 237 163\n 190 26 104 32 11 204\n 234 18 24 147 60 154\n 186 231 237 162 222 214\n 139 105 18 26 171 119\n\njulia> size(img_for_plot)\n(6, 6, 3)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |