/ / faire de l'algèbre avec un tableau MxNx3 en utilisant la vectorisation en python? - tableaux, vecteur, scipy, vectorisation, algèbre linéaire

faire de l'algèbre avec un tableau MxNx3 en utilisant la vectorisation en python? - tableaux, vecteur, scipy, vectorisation, algèbre linéaire

Supposons que j’ai un tableau MxNx3 A, où le premierdeux index font référence aux coordonnées d'un point et le dernier index (le nombre "3") fait référence aux trois composantes d'un vecteur. par exemple. A [4,7 ,:] = [1,2,3] signifie que le vecteur au point (7,4) est (1,2,3).

Maintenant, je dois implémenter les opérations suivantes:

Lx = D*ux - (x-xo)
Ly = D*uy + (y-yo)
Lz = D

où D, ux, uy, xo, yo sont toutes des constantes quisont déjà connus. Lx, Ly et Lz sont les trois composantes du vecteur en chaque point (x, y) (remarque: x est l'index de la colonne et y est l'index de la ligne, respectivement). Le plus gros problème concerne les x-xo et y-yo, car x et y sont différents pour des points différents. Alors, comment effectuer efficacement ces opérations pour un tableau MxNx3, en utilisant du code vectorisé ou d’autres méthodes rapides?

Merci

Réponses:

2 pour la réponse № 1

Vous pouvez utiliser le meshgrid fonction de numpy:

import numpy as np
M=10
N=10
D=1
ux=0.5
uy=0.5
xo=1
yo=1
A=np.empty((M,N,3))
x=range(M)
y=range(N)
xv, yv = np.meshgrid(x, y, sparse=False, indexing="ij")
A[:,:,0]=D*ux - (xv-xo)
A[:,:,1]=D*uy - (yv-yo)
A[:,:,2]=D

1 pour la réponse № 2

Si vous souhaitez utiliser les valeurs X et Y, vous devez les inclure dans la matrice (ou dans une autre matrice) au lieu de vous fier à leurs index.

Pour cela, vous pouvez utiliser certaines des routines de création de plage de Numpy, spécialement numpy.mgrid.