如何在Python中动态连接2D数组?

时间:2017-09-28 14:10:55

标签: python arrays numpy dynamic concatenation

我试图以动态方式使用numpy水平连接2D数组。从空数组开始,我想根据if条件结果添加2D数组。我不知道最终的维度所以我不能在循环开始之前定义任何东西。假设我有2D数组,叫做A,B,C:

X = np.array([])
for name in modules:
   if name = 'AAA':
      X = np.append(X,A, axis = 1)
   if name = 'BBB'
      X = np.append(X,B, axis = 1)
   if name = 'CCC'
      X = np.append(X,C, axis = 1)

在阅读np.append如何工作后,我意识到为什么这个解决方案是错误的。是否有一种简单的方法可以即时生成串联? N:B:我知道A,B,C的列数和行数(它们具有相同的行数)但我不知道将连接多少个矩阵,因为所有矩阵都取决于if条件。连接顺序很重要,应该在代码中报告。

2 个答案:

答案 0 :(得分:2)

您可以创建一个充当查找表的字典,将名称与数组匹配。

mapper = {'AAA': A,
          'BBB': B,
          'CCC': C}

X = np.hstack([mapper[name] for name in modules])

答案 1 :(得分:1)

由于最初XABC的行数不同,因此您无法将X添加到X = None for name in modules: if name = 'AAA': X = np.append(X,A, axis = 1) if X is not None else A if name = 'BBB' X = np.append(X,B, axis = 1) if X is not None else B if name = 'CCC' X = np.append(X,C, axis = 1) if X is not None else C 他们这是一个小小的调整:

transform: scaleX(-1);

希望这会有所帮助。