为什么numpy文档建议更喜欢concatente over hstack?

时间:2017-02-10 22:24:19

标签: python numpy scipy

为什么numpy documentation建议更喜欢concatente over hstack?

  

但你应该更喜欢np.concatenate或np.stack。

根据this answer hstack是连接的包装器。那么为什么不使用hstack来提高代码的可读性呢?

1 个答案:

答案 0 :(得分:0)

因此hstack中的实际代码是:

arrs = [atleast_1d(_m) for _m in tup]
# As a special case, dimension 0 of 1-dimensional arrays is "horizontal"
if arrs[0].ndim == 1:
    return _nx.concatenate(arrs, 0)
else:
    return _nx.concatenate(arrs, 1)

首先遍历参数并确保每个参数至少为1d。这会处理0d和标量元素,例如np.hstack([0,1,np.arange(3)])

其余的选择在单轴和唯一轴或第二轴之间连接。

vstack是类似的,除了它使事情至少2d,并在1日连接。

从SO问题/答案判断,这些问题仍在使用中,我认为在大多数情况下它们不会引起问题。它造成了大多数问题np.appendhstack这是我希望他们永远不会添加的那个。

我认为vstackthis的主要问题是他们鼓励(或至少允许)对尺寸和形状进行懒惰思考。当问题出现时,因为海报并不了解具有相同维数的方法是什么,或者形状必须相等(除了一个轴)。