>>> import numpy as np
>>> a = np.array([112,123,134,145])
>>> b = np.array([212,223,234])
>>> c = np.array([312,323])
>>> d = np.array([412])
>>> arr = np.hstack([a,b,c,d])
>>> arr
array([112, 123, 134, 145, 212, 223, 234, 312, 323, 412])
>>> arr = np.array([a,b,c,d])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (4,) + inhomogeneous part.
>>>
预期数组 -
np.array([[112,123,134,145], [212,223,234], [312,323], [412]], ...)
不知道为什么这对你不起作用,因为它对我来说没有问题,而且你所做的是这种情况的常见方法(可以在here找到另一个例子)。
您可以尝试的另一种类似方法(不是特别有效,但可能会完成工作)只是附加一个空白列表,如下所示:
import numpy as np
a = np.array([112,123,134,145])
b = np.array([212,223,234])
c = np.array([312,323])
d = np.array([412])
e = []
for sublist in [a,b,c,d]:
e.append(sublist)
老实说,你所做的不起作用似乎很奇怪,但我希望这有助于提供至少另一种选择。
我应该注意到,我确实遇到了一个专门用于处理嵌套可变大小数据的库,称为 Awkward Array
numpy.hstack()
函数可用于沿水平轴连接两个或多个数组。但是,此函数会在连接数组之前将其展平。
所以你可以用这个代替:
import numpy as np
a = [112, 123, 134, 145]
b = [212, 223, 234]
c = [312, 323]
d = [412]
e = []
# Create a list of lists
list_of_lists = [a, b, c, d, e]
arr = np.array(list_of_lists)
print(arr)