我是python的新手。我想知道如何以这种特殊方式连接数组a和b。
我尝试使用stack,vstack,hstack,concatenate等等,但是仍然无法获得想要的结果。
a= [[ 0],
[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6]]
b= [[1,2,3],
[1,2,3],
[1,2,3],
[1,2,3],
[1,2,3],
[1,2,3],
[1,2,3]]
c = np.somefunction(a,b)
c = [
[[0],[1,2,3]],
[[1],[1,2,3]],
[[2],[1,2,3]],
[[3],[1,2,3]],
[[4],[1,2,3]],
[[5],[1,2,3]],
[[6],[1,2,3]],
]
答案 0 :(得分:2)
问题是您有一个锯齿状的数组。换句话说,列表列表中的每个子列表的长度都不相同,因此无法构造常规的NumPy int
数组。
因此,您可以使用简单的列表理解或map
。我假设您的a
列表列表以[0]
开头并以[5]
结尾:
c = [[i, j] for i, j in zip(a, b)] # list comprehension
c = list(map(list, zip(a, b))) # functional version
# [[[0], [1, 2, 3]],
# [[1], [1, 2, 3]],
# [[2], [1, 2, 3]],
# [[3], [1, 2, 3]],
# [[4], [1, 2, 3]],
# [[5], [1, 2, 3]]]
可以将其转换为数组,但是它将具有object
dtype。在大多数情况下,与常规的Python列表列表相比,它没有什么好处:
c_arr = np.array(c)
# array([[[0], [1, 2, 3]],
# [[1], [1, 2, 3]],
# [[2], [1, 2, 3]],
# [[3], [1, 2, 3]],
# [[4], [1, 2, 3]],
# [[5], [1, 2, 3]]], dtype=object)
答案 1 :(得分:2)
您可以使用列表推导。由于两个数组的尺寸不匹配,因此无法在NumPy中使用concatenate
。在这里,我假设您要从1开始数组a
。如果不是,则可以简单地将a[1:]
替换为a
。
c = [list(i) for i in zip(a[1:],b)]
[[[1], [1, 2, 3]],
[[2], [1, 2, 3]],
[[3], [1, 2, 3]],
[[4], [1, 2, 3]],
[[5], [1, 2, 3]],
[[6], [1, 2, 3]]]
答案 2 :(得分:0)
答案 3 :(得分:0)