gpt4 book ai didi

python - Julia:使用 EllipsisNotation 在某些维度上添加逐元素操作

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:30 25 4
gpt4 key购买 nike

作为最后一次,我想将以下python代码翻译成julia

import numpy as np
from numpy import pi as π
A = np.random.random([3,4,5,6]) # arbitrary dimensions
σ = np.array([[π, -π],
[π, 1]])
B = A[...,1:2,1:2] + σ

我的方法到现在还行不通

using EllipsisNotation
A = rand(3,4,5,6)
σ = [π -π;
π 1]
B = A[..,1:2,1:2] + σ

而且我发现了一种不同于循环遍历其他维度的方法。您知道如何做到这一点吗?

最佳答案

您似乎正在尝试做一些对 numpy 极为特殊的事情,并且与面向行的思维方式紧密相关。显然,Numpy 正在以一种难以理解的方式为数组添加维度,而且看起来很不自然(如何将 (3,4,1,1) 数组与 (2,2) 数组相加?!维度不匹配!)。同样的事情适用于你之前的 question .

向外移动尺寸对我来说似乎很奇怪。 Julia,也许因为它是专栏专业,所以不是那样工作的。

一些建议

  • 您必须转变思路,从行优先到列优先。
  • 尝试广播时,您必须使用点分运算符:A .+ σ
  • 索引是基于 1 且包含在内的,而不是 A[1:2] 使用 A[2:2] 或只是 A[2]

也就是说,您可以通过这样做在 Julia 中获得相同的结果(编辑:我在基于 1 与 0 的索引方面犯了一个错误,现在已修复):

B = A[.., 2, 2] .+ reshape(σ, (1, 1, size(σ)...))

顺便说一句:我不知道可以在 Python 中使用 unicode 标识符!!非常酷。

关于python - Julia:使用 EllipsisNotation 在某些维度上添加逐元素操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com