web-dev-qa-db-fra.com

Numpy Créer une maquette du max de paires consécutives dans un autre tableau

J'ai un tableau numpy:

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

Ce que je veux, c'est créer un autre tableau B où chaque élément est le max de 2 paires consécutives dans A, donc je reçois:

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

Des idées sur la manière de mettre en œuvre?
[.____] des idées sur la manière de la mettre en œuvre pour plus de 2 éléments? (même chose mais pour les n éléments consécutifs)

Éditer:

Les réponses m'ont donné un moyen de résoudre cette question, mais pour la vitrine N-Taille, y a-t-il une manière plus efficace qui ne nécessite pas de boucles?

EDIT2:

Il est possible que la question est équivalente pour demander comment effectuer 1D max-mise en commun d'une liste avec une fenêtre de taille n. Est-ce que quelqu'un sait comment mettre en œuvre cela efficacement?

15
GalSuchetzky

Utilisation 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

Ou à l'aide de NUMPY:

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