原位连接2D numpy数组的子数组

时间:2017-10-26 10:18:11

标签: python arrays python-3.x numpy

我有一个numpy数组

a = array([[1,2], [3,4], [5,6] .....])

我有两个索引作为这样的元组(0,2)。所以我想加入这些子索引的子数组。所以最终的预期输出有点像这样 -

a = array([[1,2,5,6], [3,4] .....])

在此连接之后,索引和顺序没有意义。也就是说,[1,2,5,6]可能会在[3,4]之后出现。此外,子阵列大小2只是代表性的,它也可以是不均匀的。 如何使用一些内置的numpy函数来做到这一点?

2 个答案:

答案 0 :(得分:2)

您无法使用numpy numpy arrays所有 arrays上需要相同的axis长度,但您可以使用嵌套lists }。

因此,使用lists,您只需创建一个function来做您想做的事情,所以:

def joinSubs(lst, tpl):
    lst[tpl[0]] += lst[tpl[1]]
    lst.pop(tpl[1])
    return lst

然后运行:

joinSubs([[1,2], [3,4], [5,6]], (0,2))

提供您想要的list :)

[[1, 2, 5, 6], [3, 4]]

请注意,如果此numpy array已经大量嵌入其他部分代码并使用numpy functions,则可以使用.tolist()将其转换为{{ 1}}:

list

答案 1 :(得分:0)

如果你想坚持使用numpy,你可以使用它。

a = np.array([[1, 2], [3, 4], [5, 6]])
b = (0, 2)
a_final = np.array([np.delete(a, b, 0), a[[*b]].flatten()])