gpt4 book ai didi

Python3、Numpy——矩阵元素的矩阵

转载 作者:行者123 更新时间:2023-11-28 20:13:54 25 4
gpt4 key购买 nike

我想创建一个包含矩阵元素的矩阵。所以我做了显而易见的事情并做了这个:

import numpy as np

A = np.array([1,2,3,1],[3,1,5,1])
B = np.array([1,6,8,9],[9,2,7,1])
E = np.array([A, B],[B, A])

但是编译器返回:TypeError: data type not understanded

我能做些什么来创建这样一个矩阵,因为我有非常大的矩阵而且我没有时间明确地写下每个人?


* 编辑 1:*

发生的其他问题:

enter image description here

我得到的不是 14x14 矩阵,而是多维 (2,2,7,7) 矩阵。在我最初的问题的简化版本中,一切都很好。知道为什么现在会发生这种情况吗?

在这种情况下,我有 Amat 7x7、Bmat 7x7、Emat 14x14、Smat 14x14


编辑 2

好的,我使用 np.block() 解决了问题,正如下面评论中所述。非常感谢。


最佳答案

假设您想要一个形状为 (4, 8) 的二维数组作为结果,听起来好像您正在寻找 numpy.block .它从 NumPy 1.13 开始可用,顾名思义,它用 block 创建一个新数组,其中每个 block 都是一个现有数组。

在创建 AB 的调用中,您还需要一对额外的方括号。 numpy.array的签名是:

array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

因此,如果您编写 np.array([1, 2, 3, 1], [3, 1, 5, 1]),那么您将向 传递两个参数array 函数,第二个参数将被解释为 dtype:即数组元素的所需数据类型。这就是您收到“无法理解的数据类型”错误的原因。相反,您想传递一个嵌套的列表列表作为第一个参数:np.array([[1, 2, 3, 1], [3, 1, 5, 1]]).

综合起来:

>>> import numpy as np
>>> A = np.array([[1, 2, 3, 1], [3, 1, 5, 1]])
>>> B = np.array([[1, 6, 8, 9], [9, 2, 7, 1]])
>>> E = np.block([[A, B], [B, A]])
>>> A
array([[1, 2, 3, 1],
[3, 1, 5, 1]])
>>> B
array([[1, 6, 8, 9],
[9, 2, 7, 1]])
>>> E
array([[1, 2, 3, 1, 1, 6, 8, 9],
[3, 1, 5, 1, 9, 2, 7, 1],
[1, 6, 8, 9, 1, 2, 3, 1],
[9, 2, 7, 1, 3, 1, 5, 1]])

关于Python3、Numpy——矩阵元素的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226079/

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