Python 阵列点积
我有一个列向量:Python 阵列点积,python,arrays,numpy,product,Python,Arrays,Numpy,Product,我有一个列向量: a = [[1] [2] [3]] 首先,我怎样才能去掉外支架?我需要在*a创建点积,答案应该是单数。我当前的代码生成[[14]],但我需要14本身 这是我目前的代码: SSE = np.inner(np.transpose(a), np.transpose(a)) 使用hstack np.hstack(a).dot(a) array([14]) 使用hstack np.hstack(a).dot(a) array([14]) 首先,让我们对符号要挑剔 a = [[1]
a = [[1] [2] [3]]
首先,我怎样才能去掉外支架?我需要在*a创建点积,答案应该是单数。我当前的代码生成[[14]]
,但我需要14
本身
这是我目前的代码:
SSE = np.inner(np.transpose(a), np.transpose(a))
使用hstack
np.hstack(a).dot(a)
array([14])
使用hstack
np.hstack(a).dot(a)
array([14])
首先,让我们对符号要挑剔
a = [[1] [2] [3]]
不是有效的Python。即使目标是numpy数组,也会出现语法错误
In [202]: a = np.array([[1],[2],[3]])
In [203]: a.shape
Out[203]: (3, 1)
In [204]: a
Out[204]:
array([[1],
[2],
[3]])
In [205]: print(a)
[[1]
[2]
[3]]
数组的print/str显示省略了逗号,但括号是显示的组成部分。它们有助于显示阵列的尺寸。此数组的等效列表显示为[[1]、[2]、[3]]
如果我对a(1,3)和a(3,1)做一个dot
,结果是(1,1)。点
(以及您的内部
版本)保留阵列的外部尺寸
In [206]: np.dot(a.T,a)
Out[206]: array([[14]])
In [207]: _.shape
Out[207]: (1, 1)
我们可以“展平”阵列,因此它的形状现在是(3,):
np.dot
对1d数组参数有特殊的文档处理。请注意,.T
转置是不需要的。转置对1d数组的形状没有任何影响
np.internal
也可以使用,但是np.dot
更常用:
In [215]: np.inner(a.T, a.T)
Out[215]: array([[14]])
In [216]: np.inner(a1, a1)
Out[216]: 14
最近几年,有matmul
函数和@
操作符工作原理类似:
In [217]: a.T@a
Out[217]: array([[14]])
可以在计算后删除尺寸标注:
In [218]: (a.T@a).squeeze()
Out[218]: array(14)
In [219]: (a.T@a).item()
Out[219]: 14
首先,让我们对符号要挑剔
a = [[1] [2] [3]]
不是有效的Python。即使目标是numpy数组,也会出现语法错误
In [202]: a = np.array([[1],[2],[3]])
In [203]: a.shape
Out[203]: (3, 1)
In [204]: a
Out[204]:
array([[1],
[2],
[3]])
In [205]: print(a)
[[1]
[2]
[3]]
数组的print/str显示省略了逗号,但括号是显示的组成部分。它们有助于显示数组的尺寸。此数组的等效列表显示为[[1],[2],[3]]
如果我用a(3,1)对a(1,3)做一个dot
,结果是(1,1)。dot
(以及您的内部版本)保留数组的外部尺寸
In [206]: np.dot(a.T,a)
Out[206]: array([[14]])
In [207]: _.shape
Out[207]: (1, 1)
我们可以“展平”阵列,因此它的形状现在是(3,):
np.dot
对1d数组参数有特殊的文档处理。请注意,.T
转置是不需要的。转置对1d数组的形状没有任何影响
np.internal
也可以使用,但是np.dot
更常用:
In [215]: np.inner(a.T, a.T)
Out[215]: array([[14]])
In [216]: np.inner(a1, a1)
Out[216]: 14
最近几年,有matmul
函数和@
操作符工作原理类似:
In [217]: a.T@a
Out[217]: array([[14]])
可以在计算后删除尺寸标注:
In [218]: (a.T@a).squeeze()
Out[218]: array(14)
In [219]: (a.T@a).item()
Out[219]: 14
为什么要去掉外括号?这就是“列”向量的显示方式。a
是(3,1)形状,对吗?a.T
然后是(1,3)。dot
在三维空间上留下一个(1,1)结果。为什么要去掉外括号?这就是“列”向量的显示方式。a
是(3,1)形状,对吗?a.T
然后是(1,3)。dot
在三维上留下(1,1)结果。