Wenn ichSubstraktion Nummer aus der Liste Anhebung nicht Typeerror
a = [1, 2, 7]
a - a[-1]
I TypeError: unsupported operand type(s) for -: 'list' and 'int'
Allerdings bekommen, habe ich eine Liste b
aus np.float64
, und der folgende Code funktioniert:
type(b)
# list
b - b[-1]
# array([ 281.04209146, 6.57013103, 0. ])
Ich denke, das ist, weil die Zahlen in b
np.float64
sind, und b
ist s Omewhat casted zu np.array
, dann Sendung geschieht. Aber ich fand dieses Verhalten immer noch überraschend: da alle Elemente in einer Liste nicht den gleichen Typ haben müssen, was wäre, wenn b[0]
eine Zeichenkette gewesen wäre? Die Operanden in b - b[-1]
wären immer noch list
und np.float64
gewesen, warum also b - b[-1]
keine TypeError
auslösen?
EDIT: Jemand antwortete sagen, dass list
und np.array
verschieden sind; Nun Ich weiss. Aber dort b
ist kein np.array
. Es ist verhält sich wie einer, aber sein Typ ist list
, wie ich im Codeausschnitt angegeben habe.
Hier ist ein minimales Arbeitsbeispiel für b
:
b
# [1598.717274996219, 1324.245314569733, 1317.6751835362861]
type(b[0])
# numpy.float64
Ja, ich habe dieses Verhalten auch getestet. Sorry, wenn ich nicht klar war, meine Frage ist eher "Warum nicht' list - np.float "systematisch einen Fehler auslöst?". –
Numpy ist 'hilfreich' (oder gierig, wenn es unerwünscht ist). Wenn es irgendwo in einem Ausdruck verwendet wird, versucht es überall zu sein. Wenn Sie also '[1,2,3] -np.array ([1,2,3])' 'machen, erhalten Sie' np.array ([0,0,0]) ' –
Ok, also könnten Sie das klären 'es versucht '? Was sind die Überprüfungen? –