Holen Sie sich den letzten ungleich Null-Index in einem Vektor (Numpy)

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Holen Sie sich den letzten ungleich Null-Index in einem Vektor (Numpy)

by Anonymous » Yesterday, 21:38

Ich habe ein 1D-Numpy-Array und möchte den Index des letzten ungleich-Elements finden. Der Vektor besteht nur aus 1s und 0s, nicht sicher, ob dies relevante Informationen sind.

Code: Select all

import numpy as np

vec = np.array([0, 1, 1, 0, 0, 1, 0, 0])
In diesem Fall sollte das Ergebnis 5 sein, da VEC [5] == 1 der letzte Wert ungleich Null ist. so leistungsfähig wie möglich sein. Jede kleine Kante hilft. < /P>
Hier sind zwei Ansätze, die ich derzeit habe. Eine, die Standard -Python -Loops verwendet, der andere versucht, das zu nutzen, was Numpy mir gibt. Ich habe das Gefühl, dass es eine elegante Möglichkeit geben könnte, dies noch leistungsfähiger zu machen, aber ich bin eingeschränkt, indem ich nur einen Wirtschaftsabschluss habe.

Code: Select all

def last_nonzero_index(vec):
for i in range(len(vec) - 1, -1, -1):
if vec[i] != 0:
return i
return None
< /code>
def last_nonzero_index(vec):
rev_idx = np.flatnonzero(vec[::-1])
return len(vec) - 1 - rev_idx[0] if rev_idx.size else None
Im Moment schlägt die native Python -Schleife alles andere.

Top