我有一个数据集,它是一个元组列表,我需要将其转换为3d numpy数组。举个例子:
data = [(1, 65, -18, -1, -1 ),
(1, -18,-1, -1,-1),
(2, 65, -19, -1, -1),
(2, 65, -18, -1, -1),
(3, 62, -18, -1, -1)]
我想创建一个像这样的3d numpy数组:
array[[[[65], [-18], [-1], [-1]],
[[-18], [-1], [-1], [-1]]],
[[[65], [-19], [-1], [-1]],
[[65], [-18], [-1], [-1]]],
[[[62], [-18], [-1], [-1]]]]
如何使用Numpy库实现这一点?
我已经尝试过这样做:
d = defaultdict(list)
for item in data:
d[item[0]].append((item[1:5]))
# Extract the tuples from the dictionary values using a list
#comprehension
values_list = [np.array(v) for v in d.values()]
#print(values_list)
# Convert the list of arrays to a 3D numpy array
my_array = np.array(values_list)
print(my_array)
但这给了我一个3个数组的列表,我只想要一个3d数组,我还使用了np.stack,但由于每个数组的长度不同,它给了我这个错误:
ValueError: all input arrays must have the
same shape
我真的很沮丧,如果有人知道任何方法,请与我分享。
3条答案
按热度按时间o8x7eapl1#
循环遍历每个值,并重新构造列表:
输出:
qrjkbowd2#
我认为一个简单的方法来做它并存储在一个numpy数组中是这样的
其输出
从中你可以随心所欲地操纵
cwxwcias3#
应用
np.unique
+np.split
的组合,根据初始arr
的第1列中包含的“id”获得数组组: