0-dimensionale Arrayprobleme mit `numpy.Vectorize`Python

Python-Programme
Anonymous
 0-dimensionale Arrayprobleme mit `numpy.Vectorize`

Post by Anonymous »

Code: Select all

numpy.vectorize
wandelt eine skalare Funktion bequem in vektorisierte Funktionen um, die direkt auf Arrays angewendet werden können. Bei der Eingabe eines einzelnen Werts in die vektorisierte Funktion ist der Ausgang jedoch ein 0-dimentisches Array anstelle des entsprechenden Werttyps, der bei der Verwendung des Ergebniss an anderer Stelle aufgrund von Tippproblemen Fehler verursachen kann. Meine Frage ist: Gibt es einen Mechanismus in Numpy , der dieses Problem durch automatisch konvertieren, indem der Rückgabewert des 0-dimensionalen Arrays in den entsprechenden Datentyp umgewandelt wird? D Geben Sie ein Beispiel: < /p>

Code: Select all

@np.vectorize ( excluded = ( 1, 2 ) )
def rescale (
value: float,
srcRange: tuple [ float, float ],
dstRange: tuple [ float, float ] = ( 0, 1 ),
) -> float:
srcMin, srcMax = srcRange
dstMin, dstMax = dstRange
t = ( value - srcMin ) / ( srcMax - srcMin )
return dstMin + t * ( dstMax - dstMin )
Bei Aufrufen der obigen Funktion mit der Rescaly (5, (0, 10)) ist der Rückgabewert numpy.Array (0,5) anstelle des Werts nur der Wert 0.5 .
Ich werde dieses Problem derzeit durch einen selbstdefinierten Dekorator auflösen:

Code: Select all

def vectorize0dFix ( func ):
def _func ( *args, **kwargs ):
result = func ( *args, **kwargs )
if isinstance ( result, np.ndarray ) and result.shape == ( ):
return result.item ( )
else:
return result
return _func
Aber wenn dieses Problem Probleme verursacht, sollte es einen Mechanismus in Numpy geben, der das Problem ordnungsgemäß befasst. Ich frage mich, ob es einen gibt oder warum es nicht gibt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post