如何在列表或数组中串联不同大小的数组?

时间:2018-11-12 15:15:40

标签: python arrays python-3.x

我有多个大小不同的数组,例如m0xn0xk0, m1xn1xk1, m2xn2xk2...。我正在寻找一种将它们串联到单个数组A_concate中的方法,以后可以根据该索引对其进行访问。喜欢

A_concate [0]=a_0 # size of m0xn0xk0
A_concate [1]=a_1 # size of m1xn1xk1
...

我们有什么办法可以在python中做到吗?谢谢大家

2 个答案:

答案 0 :(得分:1)

如果这只是您想要做的,那为什么不将它们放在列表中呢?

您可以使用

A_concate = [a_0, a_1, a_2,..., a_n]

如果您真的想使用数组,则可以使用

import numpy as np
A_concate = np.array([a_0, a_1, a_2,..., a_n])

以上内容将为您提供一系列对象。每个条目是一个数组。您将没有完整的功能来分割内部数组,但这取决于您要做什么

以下是上述内容的最小示例

import numpy as np
a_0 = np.arange(9)
a_1 = np.arange(10)
a_2 = np.arange(16)
A_concate = np.array([a_0, a_1, a_2])

编辑

添加另一个示例以显示其比一维阵列更通用

import numpy as np
a_0 = np.random.normal(0,1,size=(3,4,5,))
a_1 = np.random.normal(0,1,size=(4,5,6,))
a_2 = np.random.normal(0,1,size=(35,19,97,))
a_3 = np.random.normal(0,1,size=(2,6,14,22,89))
A_concate = np.array([a_0, a_1, a_2, a_3])

答案 1 :(得分:1)

这取决于您要对该结构执行的操作。例如,如果您想索引m0xn0xk0, m1xn1xk1, m2xn2xk2...所独有的某个值,则可以使用像这样的字典:

A_concate = {}
A_concate[some_key] = m0xn0xk0
A_concate[some_other_key] = m1xn1xk1

,然后您可以使用键值访问它们。另一方面,如果您只希望所有这些列表都存在于同一对象上,并且只打算遍历它们,那么使用列表就可以了:

def listify(*args):
    return list(args)

A_concate = listify(m0xn0xk0, m1xn1xk1, m2xn2xk2, ...)

最后,如果您只想将这些对象的所有值放在同一位置,则可以将它们串联到一个列表中:

def flatten(*lists):
    a = []
    for l in lists:
        a.extend(l)
    return a

A_concate = flatten(m0xn0xk0, m1xn1xk1, m2xn2xk2, ...)

这仅取决于您要使用它做什么。