web-dev-qa-db-ja.com

別の配列の連続したペアの最大値のNumpy create配列

私はnumpy配列を持っています:

A = np.array([8, 2, 33, 4, 3, 6])
 _

私が欲しいのは、各要素がAの2つの連続したペアのペアワイズ最大値である別の配列Bを作成することです。

B = np.array([8, 33, 33, 4, 6])
 _

実装方法についてのアイデアは何でも?
[。] 2要素より多くの要素のためにこれを実装する方法に関するアイデアはどれでもありますか? (同じことが連続したn個の要素の場合)

編集:

答えは私にこの質問を解決する方法を与えましたが、Nサイズの窓の場合は、ループを必要としないより効率的な方法がありますか?

Edit2:

サイズnのウィンドウを持つリストの1D最大プーリングを実行する方法を尋ねるために質問が同等であることがわかりました。誰もがこれを効率的に実装する方法を知っていますか?

15
GalSuchetzky

Pandasを使用する

A = pd.Series([8, 2, 33, 4, 3, 6])
res = pd.concat([A,A.shift(-1)],axis=1).max(axis=1,skipna=False).dropna()

>>res
0     8.0
1    33.0
2    33.0
3     4.0
4     6.0
 _

またはnumpyを使って:

np.vstack([A[1:],A[:-1]]).max(axis=0)
 _
0
Binyamin Even