我有一个列表A
,包含多个不同形状的数组。我想把这些数组追加到一个包含多个列表的数组中。但是出现了一个错误。我也显示了预期的输出。
import numpy as np
arB=[]
A=[np.array([[ 42, 63],
[ 84, 95],
[118, 129],
[129, 140],
[140, 151],
[185, 196],
[196, 207],
[208, 219]]),np.array([[ 21, 42],
[ 63, 84],
[ 95, 106],
[106, 117],
[117, 118],
[207, 208]])]
for i in range(0,len(A)):
for j in range(0,len(A[i])):
for k in range(0,2):
B=A[i,j,k]
arB.append(B)
B=np.array(arB)
print([B])
错误为
in <module>
B=A[i,j,k]
TypeError: list indices must be integers or slices, not tuple
预期输出为
array([[42, 63, 84, 95, 118, 129, 129, 140, 140, 151, 185, 196, 196, 207, 208, 219],
[[ 21, 42, 63, 84, 95, 106,106, 117, 117, 118, 207, 208]])
4条答案
按热度按时间gfttwv5a1#
A
是一个列表不能在索引中同时分配三个值
A[i,j,k]
这就是为什么会出现错误:
TypeError: list indices must be integers or slices, not tuple
5us2dqdw2#
代码:-
这将给予输出:-
rdlzhqv93#
您可以使用列表解析:
如果你真的需要一个列表数组,你必须创建一个指定
dtype=object
的数组,因为每个列表的大小都不一样:klr1opcd4#
只需对列表中的每个数组应用
hstack
(或等效的np.concatenate
):你可以添加
np.array(A1, dtype=object)
,但为什么要这么麻烦呢?你从一个列表开始,为什么不坚持下去呢?