numpy中的矩阵乘法误差

时间:2015-09-14 07:39:29

标签: python numpy

我有以下两个numpy数组:

np.random.seed(1)
y2=np.random.standard_normal((50,1))
lambda_=np.zeros((100,2));
lambda_[0]=np.random.gamma(1,1,2);

但是当我尝试做的时候

np.dot(y2,lambda_[0])

或其转置版本:

np.dot(y2,lambda_[0].T)

我得到错误ValueError:矩阵未对齐

现在我明白我可以通过使用numpy矩阵来绕过这个错误,但是没有转换为np.matrix效率低下?我是python的新手所以也许我错了。只是尝试尽可能快地编写代码。

2 个答案:

答案 0 :(得分:2)

y2的形状为(50, 1)lambda_[0]的形状为(2,),因此dot()将其视为矩阵向量乘法,因此,抛出错误。如果您希望将第二个参数视为(1,2)矩阵,则需要对其进行整形:

np.dot(y2,lambda_[0].reshape(1,2))

或者,使用lambda_而不是1D的2D视图:

np.dot(y2,lambda_[0:1])

答案 1 :(得分:1)

尽管使用numpy实在是太容易了。您可以使用python进行以下操作。

df = pd.DataFrame()
for i in range(20):
    df[f'Col {i}'] = np.random.randn(20)

fig, axes = plt.subplots()
for i in range(20):
    axes.scatter([i+0.5]*len(df), df[f'Col {i}'])
axes.set_xticks(range(20))
plt.show()