我在Python中有这个问题,我无法弄清楚我是如何做到这一点的。我有三个数组:
两种形式:
array1 ([ 1, 2, 3])
array2 ([ 4, 5, 6])
以及其中一种形式:
array3 ([ [1, 2, 3], [2, 3, 4], [3, 4, 5]])
我想要的是来自这两个数组的数组,它有三列,就这样,2D数组位于中心:
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])
任何帮助表示赞赏。谢谢。
这是一个坏主意。 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
,因为您要使用序列设置数组元素。