2017-02-10 10 views
0

なぜnumpyはhstackよりもconcatenteを好むことをお勧めしますか?documentationなぜnumpyドキュメントはhstackよりもconcatenteを好むことをお勧めしますか?

しかし、np.concatenateまたはnp.stackを使用することをおすすめします。

this answerによると、hstackは連結のラッパーです。その場合、なぜコードの可読性を向上させるhstackを使用しないのですか?

+0

コールスタックのフレームが1つ少なくなりますか? – wim

+1

両方を理解しようとすると、「可読性」とパフォーマンスについてはあまり気にしないでしょうか? – Divakar

+1

2以外の配列次元では、セマンティクスがより明確になるためです。 – user2357112

答えて

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)])など)。

残りの部分は、1つの軸と唯一の軸または2つ目の軸を連結するかどうかを選択します。

vstackは少なくとも2dのものを作り、1番目のものを連結する以外は似ています。

SOの質問/回答から判断すると、これらはまだかなり使用されています。ほとんどの場合、問題は発生しません。ほとんどの問題を引き起こすのはnp.appendです。それは私が彼らが決して追加したくないものです。

hstackvstackの主な問題は、ディメンションとシェイプについての怠惰な考えを奨励していることです。質問が発生するのは、ポスターが同じ次元数を持つことが何であるかを理解していないか、または(1つの軸を除いて)形状が等しくなければならないからです。

関連する問題