我有一个元组列表列表:
import numpy as np
X = [[(0.5, 0.5, 0.5), (1.0, 1.0, 1.0)], [(0.5, 0.5, 0.52), (1.0, 1.0, 1.0)], [(0.5, 0.52, 0.52), (1.0, 1.0, 1.0)], [(0.52, 0.52, 0.52), (1.0, 1.0, 1.0)], [(0.52, 0.52, 0.52), (1.0, 1.0, 1.0)]]
np.asarray([sublist for sublist in X])
并希望将其转换为2D numpy数组。我尝试了以下但没有奏效。我只是想确保新转换的2D保持X的相同形状和结构。请帮助我,非常感谢。
[[ 0.5 , 0.5 , 0.5 ],
[ 1. , 1. , 1. ]],
[[ 0.5 , 0.5 , 0.52],
[ 1. , 1. , 1. ]],
[[ 0.5 , 0.52, 0.52],
[ 1. , 1. , 1. ]],
[[ 0.52, 0.52, 0.52],
[ 1. , 1. , 1. ]],
[[ 0.52, 0.52, 0.52],
[ 1. , 1. , 1. ]]
预期结果将是:
BufferingSMTPHandler
答案 0 :(得分:0)
不知道你是在使用python 2.x还是3.x但是在3.x中你可以尝试:
>> import numpy as np
>> X = [(....)] # Your list
>> array = np.array([*X])
>> print(array)
array([[[ 0.5 , 0.5 , 0.5 ],
[ 1. , 1. , 1. ]],
[[ 0.5 , 0.5 , 0.52],
[ 1. , 1. , 1. ]],
[[ 0.5 , 0.52, 0.52],
[ 1. , 1. , 1. ]],
[[ 0.52, 0.52, 0.52],
[ 1. , 1. , 1. ]],
[[ 0.52, 0.52, 0.52],
[ 1. , 1. , 1. ]]])
不知道这是否是你想要达到的目的。
答案 1 :(得分:0)
如果我对你的列表做了正常的事情,我会得到一个3d数组:
In [38]: np.array(X)
Out[38]:
array([[[ 0.5 , 0.5 , 0.5 ],
[ 1. , 1. , 1. ]],
[[ 0.5 , 0.5 , 0.52],
[ 1. , 1. , 1. ]],
[[ 0.5 , 0.52, 0.52],
[ 1. , 1. , 1. ]],
[[ 0.52, 0.52, 0.52],
[ 1. , 1. , 1. ]],
[[ 0.52, 0.52, 0.52],
[ 1. , 1. , 1. ]]])
In [39]: _.shape
Out[39]: (5, 2, 3)
print
(str)显示看起来很像你想要的结果 - 除了包含整个事物的额外的[]集:
In [40]: print(__)
[[[ 0.5 0.5 0.5 ]
[ 1. 1. 1. ]]
[[ 0.5 0.5 0.52]
[ 1. 1. 1. ]]
[[ 0.5 0.52 0.52]
[ 1. 1. 1. ]]
[[ 0.52 0.52 0.52]
[ 1. 1. 1. ]]
[[ 0.52 0.52 0.52]
[ 1. 1. 1. ]]]
我可以将它拆分为5个2d数组的列表,但显示方式却截然不同:
In [43]: np.split(np.array(X),5)
Out[43]:
[array([[[ 0.5, 0.5, 0.5],
[ 1. , 1. , 1. ]]]), array([[[ 0.5 , 0.5 , 0.52],
[ 1. , 1. , 1. ]]]), array([[[ 0.5 , 0.52, 0.52],
...]
将每个子列表转换为数组的列表理解做同样的事情,[np.array(x) for x in X]
我也可以将(5,2,3)
数组重新分成2d数组,例如(10,3)或(5,6),但它们看起来不像你的目标。
tuple
图层是否重要(而不是列表)?我可以使用结构化数组保存它(外观明智):np.array(X, dtype=('f,f,f'))
。