为什么numpy documentation建议更喜欢concatente over hstack?
但你应该更喜欢np.concatenate或np.stack。
根据this answer hstack是连接的包装器。那么为什么不使用hstack来提高代码的可读性呢?
答案 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.append
。hstack
这是我希望他们永远不会添加的那个。
我认为vstack
和this
的主要问题是他们鼓励(或至少允许)对尺寸和形状进行懒惰思考。当问题出现时,因为海报并不了解具有相同维数的方法是什么,或者形状必须相等(除了一个轴)。