2016-05-02 4 views
-1

Ich habe den Cosinus von 90 bis -90 in Schritten von 1 in einem Array genannt latcos:Wunsch mehr einfach eine 2D rechteckige Anordnung um einen konstanten Vektor 1D multiplizieren

lat=range(90,-91,-1) 

latcos=numpy.cos(numpy.deg2rad(lat)) 

rect_array=numpy.zeros(181,361) 

#comment: not shown here but rect_array gets assigned some interesting values. 

Ich wünsche, jede Spalte multiplizieren, (enthält 181 Elemente) von rect_array Element für Element von latcos, und zwar für jede der 381 Spalten.

IPython diese Syntax für eine einzelne Spalte mag

new_partial_rect_array=latcos*rect_array[0:,0] 

und mag diese Syntax

for i in range(361): New_rect_array[0:,i]=latcos*rect_array[0:,i] 

tun, das gesamte Array aber Python nicht

New_rect_array=latcos*rect_array 

Valueerror mag: Operanden konnten nicht zusammen mit Formen gesendet werden (181,) (181, 361)

Es muss einen einfacheren Weg geben, diese spätere Multiplikation auf der gesamten rechteckigen Matrix (jede Spalte) ohne die for-Anweisung durchzuführen, aber ich bin mit python noch nicht vertraut genug, um zu wissen, wie es geht.

Vielen Dank im Voraus

+0

wat? Sie multiplizieren ein Array von Nullen mit einer Skalarzahl? –

+0

Nein, das ist nur, um die Größe des Arrays zu veranschaulichen - die tatsächliche Verwendung füllt es mit Werten. –

+1

Konnten Sie den Code zur Verfügung stellen, den Sie wirklich benutzen (außer, was überhaupt die "interessanten Werte" erzeugt), wie Ihr gegenwärtiges Beispiel Syntaxfehler und falsche Argumente zu den Funktionen etc. hat. –

Antwort

0

OK - ganz einfach, Art:

numpy.transpose(numpy.transpose(rect_array) * latcos) 

Ich dachte, ich mit nur einem transponieren wegkommen könnte, scheint aber ich beide brauchen.

Verwandte Themen