python - Numpy:从另一个矩阵创建块矩阵的函数,每个块应该包含来自另一个矩阵的相同索引的值
问题描述
我正在寻找一些快速函数来从另一个矩阵中创建矩阵中的块,例如在图片中(底部矩阵是结果): 矩阵
我还编写了一些代码来执行此操作,但对于许多矩阵来说工作缓慢。
import numpy as np
im1 = np.array([[1, 2], [3, 4]])
im2 = np.array([[5, 6], [7, 8]])
im3 = np.array([[9, 10], [11, 12]])
im4 = np.array([[13, 14], [15, 15]])
arrays = [im1, im2, im3, im4]
def array_rearrangement(arrays):
num = int(len(arrays) ** 0.5)
size = arrays[0].shape[0] * num
result = np.zeros((size, size))
k = -1
p = -1
for k1 in range(num * num):
if k1 % num == 0:
k = 0
if k1 % num == 0:
p += 1
im = arrays[k1]
for i in range(num):
for j in range(num):
x_index = i * num + p
y_index = j * num + k
result[x_index, y_index] = im[i, j]
k += 1
print(result)
array_rearrangement(arrays)
解决方案
这个答案nd
始终是nd
转型的良好起点。在您的情况下,这是一个reshape
,swapaxes
和reshape
再次。
arr = np.column_stack(arrays)
arr.reshape(-1, 2, 2).swapaxes(2, 1).reshape(4, 4)
array([[ 1, 5, 2, 6],
[ 9, 13, 10, 14],
[ 3, 7, 4, 8],
[11, 15, 12, 15]])
推荐阅读
- haskell - 测量二叉树大小的函数
- android - 如果只是项目的内容发生更改,PagedListAdapter 不会更新列表
- grails - 为什么 Grails 在返回后将我的对象保存到数据库
- python - openCV python代码中detectAndComputer方法周围的错误
- vue.js - 在 JS 控制台中更改“app”参数的值时,VueJS 不会更新浏览器中的数据
- php - 如何上传多个图像并插入同一行mysql
- amazon-web-services - DynamoDB 全局表复制系统
- angular - 角反应形式单选按钮组
- javascript - 如何计算css三角形的高度?
- c# - Xamarin.forms 使用 php 将图像上传到服务器目录