我想乘两个向量,一列(即(N+1)x1),一行(即1x(N+1))得到(N+1)x(N+1)矩阵。我对Numpy还不太熟悉,但对MATLAB有一些经验,这是MATLAB中与我在Numpy中想要的代码等价的代码:
n = 0:N;
xx = cos(pi*n/N)';
T = cos(acos(xx)*n');
在纽比我试过:
import numpy as np
n = range(0,N+1)
pi = np.pi
xx = np.cos(np.multiply(pi / float(N), n))
xxa = np.asarray(xx)
na = np.asarray(n)
nd = np.transpose(na)
T = np.cos(np.multiply(np.arccos(xxa),nd))
当我注意到如果没有它,Numpy似乎会把xx和n作为列表来处理后,我添加了asarray行。np.shape(n)
,np.shape(xx)
,np.shape(na)
和np.shape(xxa)
给出相同的结果:(100001L,)
如果你想使用类似于MATLAB的numpy,你必须确保你的数组有正确的形状。您可以使用
arrayname.shape
检查任何numpy数组的形状,并且由于数组na
具有形状(4,)
,而不是(4,1)
,transpose
方法无效,并且multiply
计算点积。使用arrayname.reshape(N+1,1)
resp。arrayname.reshape(1,N+1)
来转换数组。自Python 3.5以来,您可以使用
@
运算符进行矩阵乘法。因此,这是一个演练,以获得更易于阅读的代码,非常类似于MATLAB。这里
n.T
表示n的转置^{} 只进行元素间的乘法运算。你想要一个外部产品。使用^{} :
相关问题 更多 >
编程相关推荐