首页 > 解决方案 > 将一个 numpy 数组添加到另一个数组的每个元素的开头或结尾

问题描述

我有一个数组数组:

x = array([array([[1, 2],
   [3, 4]]),
   array([[22,  4],
   [ 9, 10],
   [ 3,  2]])], dtype=object)

我有一个长度相同的数组列表,例如:

xa = [array([11, 22]), array([33, 44])]

我想在纯 numpy 中将 xa 的每个元素添加到 x 的末尾或开头,如下所示:

* Numpy 版本 = 1.9.3

标签: pythonnumpystack

解决方案


假设您像这样导入了 numpy:

import numpy as np
from numpy import array

(1) 不完美,但这会起作用:

result = array([np.vstack((x[0], xa[0])), np.vstack((x[1], xa[1]))])

或分别:

result = array([np.vstack((xa[0], x[0])), np.vstack((xa[1], x[1]))])

(2) 更好地利用两个数组的灵活长度:

result = array([np.vstack((x[i], xa[i])) for i in range(len(x))])
result = array([np.vstack((xa[i], x[i])) for i in range(len(x))])

(3) 更 Pythonic 的处理方式:

result = array([np.vstack((x_i, xa_i)) for (x_i, xa_i) in zip(x, xa)])
result = array([np.vstack((xa_i, x_i)) for (x_i, xa_i) in zip(x, xa)])

推荐阅读