我有一个数组列表:
[[array([ 0.00000000e+00, -1.00000000e+00, -6.12323400e-17]), array([ 0.00000000e+00, 1.00000000e+00, 6.12323400e-17]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])], [[0.9957649076694132, -0.09193611180665112, 0], array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])], [[0.012185959917421326, 0.60870153111176395, -0.0], array([ 0. , -0.47671475, -0. ]), array([-0.01218596, -0.13198678, 0. ]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])], [array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]), array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])]]
我想知道如何将这样的列表转换为列表列表。 我试图通过使用理解列表来解决这个问题:
ves = [x.tolist() for x in j for j in ves]
但是,我收到了一个错误:
TypeError: 'int' object is not iterable
答案 0 :(得分:0)
你的列表理解是倒退的。顺序是从左到右,就像它是一个普通的嵌套循环一样。所以
ves = [x.tolist() for x in j for j in ves]
就像
for x in j:
for j in ves:
...
你可以看到这是一个问题,因为它试图将x设置为j中的值,但j还没有存在。
它需要反过来:
ves = [x.tolist() for j in ves for x in j]
答案 1 :(得分:0)
我将此对象复制到Ipython会话中。我看到的是
4项清单
In [246]: ll[0]
Out[246]:
[array([ 0.00000000e+00, -1.00000000e+00, -6.12323400e-17]),
array([ 0.00000000e+00, 1.00000000e+00, 6.12323400e-17]),
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]),
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])]
所以这是4个项目列表,其中元素是1d和2d数组。
但是ll[1]
包含一个列表(3个项目)和3个2d数组。 ll[3]
是4个2d数组。
要将其转换为纯列表,您必须向下迭代2个级别,并将tolist()
应用于作为数组的每个元素。如果该项目已经是列表,则不进行转换。
我试着把它写成复合列表理解;我必须这样做,您现在能否处理这些细节?
In [253]: [[l2.tolist() if isinstance(l2,np.ndarray) else l2 for l2 in l1] for l1 in ll]
Out[253]:
[[[0.0, -1.0, -6.123234e-17],
[0.0, 1.0, 6.123234e-17],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]],
[[0.9957649076694132, -0.09193611180665112, 0],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]],
[[0.012185959917421326, 0.608701531111764, -0.0],
[0.0, -0.47671475, -0.0],
[-0.01218596, -0.13198678, 0.0],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]],
[[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]],
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]]]