Wieso kommt da diese Fehlermeldung (Python - Numpy)?


22.12.2022, 21:37

c ist point und d ist data, sorry

2 Antworten

Wenn du statt

distances = numpy.zeros(data.shape[0])

nur

distances = numpy.zeros(data.shape[0])

Hinschreibst, wird es ausgeführt.

Ich vermute aber, dass du nicht das erreichst, was du eigentlich erreichen willst.

Mit numpy.subtract(point, point2) ziehst du nur ein Array von einen anderen ab. Du erhälst also wieder ein Array. Ist zum Beispiel point = [2,1] und point2 = [1,1], dann kommt [1,1] raus. (Du hättest dann auch genauso gut point-point2 nutzen können)

Kann es sein, dass du stattdessen die Distanz der beiden Punkte haben willst? Also eine reelle Zahl statt einen Vektor?

Btw: den Copy() Befehl brauchst du hier auch überhaupt nicht. Du kannst direkt auf data[i] zugreifen und damit arbeiten.

Du versuchst, ein Numpy-Array zu einem Element im distances-Array zuzuweisen, aber das distances-Array wurde als ein Array von 0en erstellt, was bedeutet, dass es nur eine Größe hat.

SamanthaI 
Fragesteller
 22.12.2022, 21:54

Wenn ich distances = numpy.arange(0, data.shape[0], 1) nutze, passiert selbiges

0
SamanthaI 
Fragesteller
 22.12.2022, 22:03

Sowas scheint leider auch nicht zu gehen xD

distances = numpy.arange([0] * point.shape[0], [data.shape[0]] * point.shape[0], [1] * point.shape[0])
0
SamanthaI 
Fragesteller
 22.12.2022, 22:07
@SamanthaI

Die Argumente wären im obigen Fall dort:

[0] * 2, [2] * 2, [1] * 2 

bzw.:

[0, 0], [2, 2], [1, 1]

xD

0
Jangler13  22.12.2022, 22:15
@SamanthaI

Ja, weil dein Array distances den Shape (n, 1) hatte.

Jeder Eintrag davon hat also den Shape (1), bzw es ist eine Zahl. Du wolltest jetzt aber in einen Eintrag ein Array vom Shape (1,2) reinschreiben. Das passt da natürlich nicht rein.

0