按元素连接单个二维数组中的嵌套数组

Concatenate the nested arrays within a single 2d array, element-wise

我有一个像这样的 numpy 数组:

array = [[1, 3, 5, 7], [2, 4, 6, 8]]

我想按元素连接它们。我发现的大多数解决方案都可以使用两个单独的二维数组来完成此操作,但我想在单个二维数组中执行此操作。

期望的输出:

array = [[1, 2], [3, 4], [5, 6], [7, 8]]

这是一个zip操作。尝试:

arr1 = [1, 3, 5, 7]
arr2 = [2, 4, 6, 8]
print(list(zip(arr1,arr2)))

输出:

[(1, 2), (3, 4), (5, 6), (7, 8)]

或者对于 numpy 数组,你有 stack 操作:

import numpy as np

a = np.array([1, 3, 5, 7])
b = np.array([2, 4, 6, 8])

c = np.stack((a,b), axis = 1)

print(c)

https://www.delftstack.com/howto/numpy/python-numpy-zip/

ljdyer 几乎是对的,但是你只有一个数组,所以你可以这样做:

list(zip(*array))

只是行代码

array = [[1, 3, 5, 7], [2, 4, 6, 8]]
print(list(zip(*array)))

输出:

[(1, 2), (3, 4), (5, 6), (7, 8)]

以下代码将在每一列中明智地连接数组元素

import numpy as np

array = np.array([[1, 3, 5, 7], [2, 4, 6, 8]])
res = []
for i in range(array.shape[1]):
  res.append(array[:, i])
res = np.array(res)
print(res.tolist())

Numpy 转置:

In [382]: np.transpose([[1, 3, 5, 7], [2, 4, 6, 8]])
Out[382]: 
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

如果它已经是一个 numpy 数组(而不是只是一个列表列表),您可以使用 T 快捷方式:

In [383]: arr = np.array([[1, 3, 5, 7], [2, 4, 6, 8]])
In [384]: arr
Out[384]: 
array([[1, 3, 5, 7],
       [2, 4, 6, 8]])
In [385]: arr.T
Out[385]: 
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

list-zip 是众所周知的转置列表版本:

In [386]: list(zip(*arr))
Out[386]: [(1, 2), (3, 4), (5, 6), (7, 8)]

注意结果是一个元组列表。