我有三个矩阵A,B,C
,它们都有相同的行数。
我想创建一个新的矩阵D,它是A,B,C相对于列的串联。
这是我非常简单的代码
A = numpy.concatenate((A, numpy.concatenate((B, C), axis=1))), axis=1)
当所有矩阵都存在时,它很好并按预期工作。
但有时我可能只有A,或只有B C等。有时一两个可能是空的。在这些情况下,程序将失败。
处理此问题的最佳和最有效的方法是什么?如果例如B不存在,我们将有B = None
答案 0 :(得分:2)
首先,您可以将两次调用合并到concatenate
:
result = numpy.concatenate((A, B, C), axis=1)
然后有两个选项 - 过滤掉None
s:
arrs = [a for a in (A, B, C) if a is not None]
result = numpy.concatenate(arrs, axis=1)
或者更好的是,实际上使用"空"数组,而不是传递None
:
A = np.random.randn(3, 5) # your actual data
B = np.zeros((3, 0)) # set to something with the same height as A, not None
C = np.zeros((3, 0)) # still 3 rows, but each row is empty
result = numpy.concatenate((A, B, C), axis=1)
答案 1 :(得分:0)
也许有一个更优雅的版本但你可以使用“if”序列:
if not A is None and not B is None and not C is None:
X = numpy.concatenate((A, numpy.concatenate((B, C), axis=1)), axis=1)
elif A is None:
if not B is None and not C is None:
X = numpy.concatenate((B, C), axis=1)
elif B is None:
X = C
else:
X = B
elif B is None:
if not A is None and not C is None:
X = numpy.concatenate((A, C), axis=1)
elif A is None:
X = C
else:
X = A
elif C is None:
if not A is None and not B is None:
X = numpy.concatenate((A, B), axis=1)
elif A is None:
X = B
else:
X = A
else:
X = None
我希望我帮助你,做好工作
答案 2 :(得分:0)
最好的方法如下: