python - 在 Python 中重塑 Julia 存储的数组
问题描述
一段时间以来我一直在努力解决这个问题,所以我决定向你寻求帮助。所以,简而言之,我的问题是以下......
我所有的代码都在 Julia 中,并且它们处理的数据已经像 Julia 一样存储(我猜是列优先级),但是现在我需要在 python 中运行一些代码来读取其中的一些数据并对其进行重构。但是,由于数据在两种 lenguajes 中的存储和读取方式不同,因此重塑的行为并不像我预期的那样(并不是说它是错误的,只是不是我想要的)作为一个例子......在 Julia 中,当我重塑一个 1D-将数组转换为(2,3,4)数组维度,我得到:
julia> a=collect(1:24);
julia> r=reshape(a,2,3,4)
2×3×4 Array{Int64,3}:
[:, :, 1] =
1 3 5
2 4 6
[:, :, 2] =
7 9 11
8 10 12
[:, :, 3] =
13 15 17
14 16 18
[:, :, 4] =
19 21 23
20 22 24
在python中我得到,
b=np.arange(1,25);
r=b.reshape(4,2,3)
给
In [200]: r
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]],
[[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24]]])
有什么方法可以在 Python 中实现与 Julia 示例中相同的结果?..
解决方案
你可以写:
>>> np.transpose(b.reshape(4,3,2), (2,1,0))
array([[[ 1, 7, 13, 19],
[ 3, 9, 15, 21],
[ 5, 11, 17, 23]],
[[ 2, 8, 14, 20],
[ 4, 10, 16, 22],
[ 6, 12, 18, 24]]])
编辑:
如https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.transpose.html中所述,第二个参数np.transpose
根据作为第二个参数给出的值排列数组的轴。实际上,在这种情况下,您可以编写np.transpose(b.reshape(4,3,2))
为默认情况下np.transpose
反转此处所需的尺寸。
推荐阅读
- android-studio - 在 Flutter 中按下导航抽屉中的某些内容时,如何更新主屏幕的布局?
- javascript - 如何对返回 JSX.element 的函数进行单元测试?
- javascript - Undefined Props in React
- python - Python While 循环程序 CSE
- concurrency - DDD - 并发和命令重试有副作用
- asp.net - 下拉菜单的 ASP:NET web api 问题
- node.js - 指示在 NodeJS 中通过 Twilio API 接收到 WhatsApp 消息?
- amazon-redshift - Redshift to_date 问题:日期格式无效;指定日期两次
- docusignapi - 只能从一个文件夹中检索 20 个文档
- php - 使用php从json中的嵌套数组中获取数据