我在学习numpy方面遇到了一些困难。我的最终目标是通过一个矩阵变换得到简单的矢量箭头图。我已经多次听说要使用数组来表示矩阵,这很合理。同时,我已经创建了网格以表示x和y坐标。
X,Y = np.meshgrid( np.arange(0,10,2),np.arange(0,10,1) )
a = np.array([[1,0],[0,1.1]])
但是,即使经过2个多小时的谷歌搜索和尝试,我仍然无法从矩阵乘法和每个向量中获取结果向量。我知道quiver需要输入分量长度,因此进入quiver函数的结果向量应该类似于x分量的
np.dot(a, [X[i,j], Y[i,j]]) - X[i,j]
,其中i和j在范围内迭代。
当然我可以用循环编程,但是numpy有太多内置工具来方便这些向量化的事情,以至于我相信一定有更好的方法。
编辑:好吧,这里是循环版本。
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))
n=10
X,Y = np.meshgrid( np.arange(-5,5),np.arange(-5,5) )
print("val test", X[5,3])
a = np.array([[0.5,0],[0,1.3]])
U = np.zeros((n,n))
V = np.zeros((n,n))
for i in range(10):
for j in range(10):
product = np.dot(a, [X[i,j], Y[i,j]]) #matrix with vector
U[i,j] = product[0]-X[i,j] # have to substract the position since quiver accepts magnitudes
V[i,j] = product[1]-Y[i,j]
Q = plt.quiver( X,Y, U, V)
a.shape = (2,2), X.shape = (10,5), Y.shape = (10,5)
。我不明白你的意思... - jkalden