Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的numpy对象不匹配错误_Python_Arrays_Matrix_Numpy_Mismatch - Fatal编程技术网

python中的numpy对象不匹配错误

python中的numpy对象不匹配错误,python,arrays,matrix,numpy,mismatch,Python,Arrays,Matrix,Numpy,Mismatch,我在python中使用numpy乘法两个大矩阵时遇到了一个问题 我有一个(15,7)矩阵,我想通过它的转置将其复乘,即在(7,15)*a(15*7),从数学上讲,这应该是可行的,但我得到一个错误: ValueError:形状不匹配:无法将对象广播到单个形状 我在Python中使用numpy。我怎样才能避开这件事,任何人请帮忙 您可能已经将矩阵表示为数组。您可以使用np.asmatrix将它们转换为矩阵,或使用np.dot进行矩阵乘法: >>> X = np.random.ran

我在python中使用numpy乘法两个大矩阵时遇到了一个问题

我有一个(15,7)矩阵,我想通过它的转置将其复乘,即在(7,15)*a(15*7),从数学上讲,这应该是可行的,但我得到一个错误:

ValueError:形状不匹配:无法将对象广播到单个形状
我在Python中使用numpy。我怎样才能避开这件事,任何人请帮忙

您可能已经将矩阵表示为数组。您可以使用
np.asmatrix
将它们转换为矩阵,或使用
np.dot
进行矩阵乘法:

>>> X = np.random.rand(15 * 7).reshape((15, 7))
>>> X.T * X
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (7,15) (15,7)
>>> np.dot(X.T, X).shape
(7, 7)
>>> X = np.asmatrix(X)
>>> (X.T * X).shape
(7, 7)
>X=np.random.rand(15*7)。重塑((15,7))
>>>X.T*X
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:操作数无法与形状(7,15)(15,7)一起广播
>>>np.点(X.T,X).形状
(7, 7)
>>>X=np.asmatrix(X)
>>>(X.T*X).形状
(7, 7)

数组和矩阵之间的一个区别是,矩阵上的
*
是矩阵积,而数组上的是元素积。

@agf:在Numpy中获得转置的方法只有一种,很难出错。有关广播的错误消息足以说明问题;如果OP没有转置矩阵/数组,他们会得到一个“对象未对齐”错误,而不是这个错误。@larsmans谢谢,没有仔细阅读。非常感谢!!拉斯曼成功了!!asmatrix函数有帮助,但也不知道*对数组和矩阵的影响。另外,在较新的(
=1.5
,我想?)版本的numpy数组中有一个
dot
方法,所以你可以只做
X.t.dot(X)
而不是
np.dot(X.t,X)