gpt4 book ai didi

python - 使用 Python 对矩阵进行切片

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:14 24 4
gpt4 key购买 nike

我需要将 12*12 矩阵切成 24 个 2*3 block 。输入矩阵是:

arr = [
[1,0,1,1,1,0,1,1,1,0,1,0],
[0,0,0,1,0,1,1,1,1,0,1,0],
[0,1,1,0,0,0,1,0,1,0,0,0],
[1,0,0,1,0,0,1,1,1,0,1,1],
[0,0,0,1,0,0,0,1,1,1,1,0],
[0,0,0,0,0,1,1,0,0,0,0,1],
[1,0,1,0,0,0,1,1,0,0,1,1],
[0,0,1,1,0,1,0,1,1,0,1,0],
[0,1,0,0,0,0,1,0,1,0,0,1],
[1,1,0,1,0,1,0,1,0,1,0,0],
[0,0,1,1,1,1,0,1,0,1,1,1],
[0,0,0,0,1,0,0,0,1,1,0,0]]

我尝试用 numpy Matrix 完成任务:

from sympy import Matrix
Matrix(arr)[:3,:2]

但它只会给出原始矩阵的一片。

Matrix([
[1, 0],
[0, 0],
[0, 1]])

将 12*12 矩阵切成 2*3 片的便捷方法是什么?我还需要原始尺寸的 3*2,但假设在准备好第一个尺寸后就很容易了。

最佳答案

您可以使用 numpy.reshape() 函数或直接将 numpy 矩阵的形状从 (12,12) 更改为 (24,3, 2) ,这应该会给你你想要的结果。

例子-

In [25]: arr
Out[25]:
[[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0],
[0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0],
[1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1],
[0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1],
[0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0],
[0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1],
[1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1],
[0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0]]

In [26]: n = np.array(arr)

In [28]: n.shape
Out[28]: (12, 12)

In [29]: n.shape = (24,3,2)

In [30]: n
Out[30]:
array([[[1, 0],
[1, 1],
[1, 0]],

[[1, 1],
[1, 0],
[1, 0]],

[[0, 0],
[0, 1],
[0, 1]],

[[1, 1],
[1, 0],
[1, 0]],
.
.
.

关于python - 使用 Python 对矩阵进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980011/

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