Python 二维阵列和一维阵列的点积不同于矩阵和一维阵列

Python 二维阵列和一维阵列的点积不同于矩阵和一维阵列,python,arrays,python-3.x,numpy,matrix,Python,Arrays,Python 3.x,Numpy,Matrix,我使用numpy函数来计算二维数组和一维数组的乘积。我注意到,当2D数组为type而1D数组为type时,dot函数返回的结果与我将ndarray类型的2D数组传递给它时的结果不同 问题:为什么结果不同 简短示例 将numpy导入为np a=[[1,2], [3,4], [5,6]] e=np.数组([1,2]) b=np.数组(a) 打印(“Ndarrray:%s”%(类型(b))) 印刷品(b) 打印(“数据阵列%d的尺寸%(np.ndim(b))) be=np.dot(b,e) 打印(be

我使用numpy函数来计算二维数组和一维数组的乘积。我注意到,当2D数组为type而1D数组为type时,
dot
函数返回的结果与我将
ndarray
类型的2D数组传递给它时的结果不同

问题:为什么结果不同

简短示例

将numpy导入为np
a=[[1,2],
[3,4],
[5,6]]
e=np.数组([1,2])
b=np.数组(a)
打印(“Ndarrray:%s”%(类型(b)))
印刷品(b)
打印(“数据阵列%d的尺寸%(np.ndim(b)))
be=np.dot(b,e)
打印(be)
打印(“阵列的尺寸*阵列%d\n”%(np.ndim(be)))
c=np.mat(a)
打印(“矩阵:%s”%(类型(c)))
印刷品(c)
打印(“矩阵%d的尺寸%(np.ndim(c)))
ce=np.dot(c,e)
印刷品(行政长官)
打印(“矩阵的尺寸*数组%d%”(np.ndim(ce)))
ndarray:
[[1 2]
[3 4]
[5 6]]
恩达里2号酒店
[ 5 11 17]
阵列的Dim*阵列1
矩阵:
[[1 2]
[3 4]
[5 6]]
矩阵2的维数
[[ 5 11 17]]
矩阵*阵列2的尺寸

首先,对于矩阵类:

注:
不再建议使用此类,即使对于线性 代数。而是使用正则数组。可以在中删除该类 未来

这是因为点积中的第一个元素是矩阵类型的,因此您会收到一个矩阵作为输出。但如果使用
形状方法
获得矩阵的“真实”大小,则会得到一致的结果:

import numpy as np
a=[[1,2],
   [3,4],
   [5,6]]
e=np.array([1,2])
b=np.array(a)
print("Ndarrray:%s"%(type(b)))
print(b)
print("Dim of ndarray %d"%(np.ndim(b)))
be=np.dot(b,e)
print(be)
print("Dim of array*array %d\n"%(np.ndim(be)))

c=np.mat(a)
print("Matrix:%s"%(type(c)))
print(c)
print("Dim of matrix %d"%(np.ndim(c)))
ce=np.dot(c,e)
print(ce)
print("Dim of matrix*array %d"%(np.ndim(ce))) 
print("Dim of matrix*array ",(ce.shape)) # -> ('Dim of matrix*array ', (1, 3))
print(type(ce)) # <class 'numpy.matrixlib.defmatrix.matrix'>
可能是这样设计的,因为当我们至少有2-dim时,我们开始谈论矩阵

import numpy as np
a=[[1,2],
   [3,4],
   [5,6]]
e=np.array([1,2])
b=np.array(a)
print("Ndarrray:%s"%(type(b)))
print(b)
print("Dim of ndarray %d"%(np.ndim(b)))
be=np.dot(b,e)
print(be)
print("Dim of array*array %d\n"%(np.ndim(be)))

c=np.mat(a)
print("Matrix:%s"%(type(c)))
print(c)
print("Dim of matrix %d"%(np.ndim(c)))
ce=np.dot(c,e)
print(ce)
print("Dim of matrix*array %d"%(np.ndim(ce))) 
print("Dim of matrix*array ",(ce.shape)) # -> ('Dim of matrix*array ', (1, 3))
print(type(ce)) # <class 'numpy.matrixlib.defmatrix.matrix'>
c=np.mat([])
print(c.ndim) # 2