Numpy 矩阵的数组索引太多



当我尝试打印ndarray中的每个条目时,我使用这个:

A = np.array([[(1,2,3)],
[1,2,3],
[1,2,3]])
dim = len(A)
for i in range(dim):
for j in range(dim):
print(A[i,j])

但是它显示:数组的索引太多 我错在哪里?

问题是 numpy 数组中的元组:

A = np.array([[(1,2,3)],
[1,2,3],
[1,2,3]])

因此,这意味着第一个子列表包含一个元素:3 元组。由于这些列表不包含不同数量的元素,numpy 将构造一个1D对象数组:

>>> A
array([list([(1, 2, 3)]), list([1, 2, 3]), list([1, 2, 3])], dtype=object)

所以数组只是对object的引用的一维数组,这些对象可以是列表,但这些可以是任何东西。因此,只有一个维度可以编制索引。

如果我们省略圆括号,我们有一个包含三个元素的列表,例如:

>>> A = np.array([[1,2,3],
...               [1,2,3],
...               [1,2,3]])
>>> A
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])

然后使用两个索引进行查询完全没有问题。

最新更新