python - 为什么 reshape(4,2) 不同于 reshape(2,-1).T 对于 2x2x2 矩阵
问题描述
我尝试了以下代码段
a = np.array([[[1, 2], [3, 4]],[[5, 6], [7, 8]]])
b = a.reshape(2,-1).T
c = a.reshape(4,2)
我认为 b 和 c 将是相同的,因为 a 正在重塑为 4x2 矩阵。但他们不是。这是b和c
[[1 5]
[2 6]
[3 7]
[4 8]]
[[1 2]
[3 4]
[5 6]
[7 8]]
为什么安排发生了变化?
解决方案
它与您正在执行的操作有关。
>>> a = np.array([[[1, 2], [3, 4]],[[5, 6], [7, 8]]])
>>> a
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
这得到了你想要的 4,2 形状
>>> a.reshape(4,2)
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
这将为您提供 2 行和 4 列
>>> a.reshape(2,-1)
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
应用 .T 运算符将您的行切换到列:
>>> a.reshape(2,-1).T
array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])
要使用 -1 作为维度重塑为 4、2 数组,它需要位于第一个位置以实现 4、2 数组:
>>> a.reshape(-1,2)
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
推荐阅读
- c++ - C ++,如何为多个线程高效地共享1个资源数组
- postgresql - RDS Serverless - 无法验证和启动 postgres
- python - 如何在 plt.hist 中重叠两个部分?
- swiftui - 内购后如何重启动画?
- shinyapps - shinyServer() 中的错误:缺少参数“func”,没有默认值
- android - 任务“:app:compileFlutterBuildProfile”执行失败
- r - 用 r 中的特定数字替换 cut 函数中的 na
- docker - 使用 NATS 组合多个 docker 运行多个微服务
- angular - 将变量传递给注入的服务以用作装饰器参数
- r - R数据框中列表的总和