我试图以动态方式使用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条件。连接顺序很重要,应该在代码中报告。
答案 0 :(得分:2)
您可以创建一个充当查找表的字典,将名称与数组匹配。
mapper = {'AAA': A,
'BBB': B,
'CCC': C}
X = np.hstack([mapper[name] for name in modules])
答案 1 :(得分:1)
由于最初X
与A
,B
或C
的行数不同,因此您无法将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);
希望这会有所帮助。