python - 在numpy中逐块重塑?
问题描述
我有一个 numpy 数组,其中的列位于块中。我想转置块。它在概念上很简单,我想一个人可以简单地做到这一点,但我不知道怎么做。
给定一个块形式的 numpy 数组np.hstack(list_of_blocks)
,我想得到np.vstack(list_of_blocks)
.
为了使其更精确,我想在下面的代码段中从一个数组转到另一个a
数组b
。
import numpy as np
a = np.zeros((3,6))
b = np.zeros((9,2))
t_max = 3
for col in range(1,7):
for time in range(1,t_max+1):
val = ((1+col)//2)*100+((col+1) % 2)*10+time
a[time-1,col-1]= val
b[time+t_max*(((1+col)//2)-1)-1,((col+1) % 2)] = val
矩阵看起来像:
>>> print(a)
[[101. 111. 201. 211. 301. 311.]
[102. 112. 202. 212. 302. 312.]
[103. 113. 203. 213. 303. 313.]]
>>> print(b)
[[101. 111.]
[102. 112.]
[103. 113.]
[201. 211.]
[202. 212.]
[203. 213.]
[301. 311.]
[302. 312.]
[303. 313.]]
当然,矩阵不是3 x (2*3)
,而是n x (k*m)
在 numpy 中像这样重塑的有效方法是什么?
解决方案
重塑、置换轴和重塑 -
N = a.shape[1]//t_max
b_out = a.reshape(a.shape[0],-1,N).swapaxes(0,1).reshape(-1,N)
推荐阅读
- java - 如何使用 java 从 oracle blob 中检索 zip 文件?
- python - 没有与您的参数匹配的方法,可用 [] python pyjnius
- kubernetes - 在 kubernetes 上运行的 traefik AWS ELB 上的真实 IP
- javascript - 如何发送复选框的值?
- powerbi - 高亮散点图 Power bi
- ios - Swift UI 在协议中使用视图(协议“视图”只能用作通用约束,因为它具有 Self 或关联的类型要求)
- php - 如何向来自特定广告系列的访问者隐藏 AdSense 广告?
- javascript - 与 Bootstrap 4 输入标记插件一起使用时,自定义 Javascript 函数不起作用
- powershell - How would I select the KB numbers in the output of the Get-WindowsUpdate command?
- cognos - Cognos 10.2.2 如何查看正在向特定收件人发送哪些报告?