我在Python中有这个问题,我无法弄清楚该如何做。我有三个数组:
两种形式:
array1 ([ 1, 2, 3])
array2 ([ 4, 5, 6])
和以下形式之一:
array3 ([ [1, 2, 3], [2, 3, 4], [3, 4, 5]])
我想要的是这两个数组中的一个数组,该数组具有三列,以这种方式,二维数组位于中间:
array ([1, [1, 2, 3], 4],
[2, [2, 3, 4], 5],
[3, [3, 4, 5], 6])
我可以通过使用例如前两个数组np.c_[array1, array2]
。
我也可以做np.c_[array1, array3, array2]
,但后来我得到了
array ([1, 1, 2, 3, 4],
[2, 2, 3, 4, 5],
[3, 3, 4, 5, 6])
感谢您的帮助。 谢谢。
答案 0 :(得分:1)
这是个坏主意。 Read up on how numpy
stores data,您将了解numpy
并不意味着要存储具有混合数据类型的锯齿状数组。
话虽这么说,您所需要的只是将三个输入元素压缩在一起。如果您确实要存储此数据,则可以将其存储为list
,这比ndarray
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
您可以通过列表理解和zip
np.array([list(el) for el in zip(a, c, b)], dtype=object)
array([[1, array([1, 2, 3]), 4],
[2, array([2, 3, 4]), 5],
[3, array([3, 4, 5]), 6]], dtype=object)
您必须指定dtype
中的object
,因为您要设置具有序列的数组元素。