Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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 np.矩阵(np.数组([0,0])和np.矩阵([0,0])之间有区别吗?_Python_Numpy_Matrix - Fatal编程技术网

Python np.矩阵(np.数组([0,0])和np.矩阵([0,0])之间有区别吗?

Python np.矩阵(np.数组([0,0])和np.矩阵([0,0])之间有区别吗?,python,numpy,matrix,Python,Numpy,Matrix,我在读这篇文章,是为了从头开始实现线性回归: # convert from data frames to numpy matrices X = np.matrix(X.values) y = np.matrix(y.values) theta = np.matrix(np.array([0,0])) 当我遇到这条线时: np.matrix(np.array([0,0])) 我想知道为什么这个人不直接写np.matrix([0,0]) 我在jupyter笔记本上运行了这两个程序,得到了相同的输

我在读这篇文章,是为了从头开始实现线性回归:

# convert from data frames to numpy matrices
X = np.matrix(X.values)
y = np.matrix(y.values)
theta = np.matrix(np.array([0,0]))
当我遇到这条线时:

np.matrix(np.array([0,0]))
我想知道为什么这个人不直接写
np.matrix([0,0])

我在jupyter笔记本上运行了这两个程序,得到了相同的输出:

theta = np.matrix([0,0])
theta2 = np.matrix(np.array([0,0]))
print(theta,theta2,type(theta),type(theta2))
输出:
[[0 0]][[0 0]]

这两者有区别吗?额外的
np.array
部分是否以某种方式增加了θ的功能?如果我将前者替换为后者,最终代码是否正常工作?

您可以检查:


np.matrix
的签名“data”可以是数组或字符串,而[0,0]及其对应的
numpy.ndarray
副本就足够了。

奇怪的是,
matrix(array([0,0])
创建了一个拥有其数据的干净对象

>>> np.matrix(np.array([0,0])).flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
>>> np.matrix(np.array([0,0])).base
矩阵([0,0])
似乎是一个匿名数组的视图

>>> np.matrix([0,0]).flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
>>> np.matrix([0,0]).base
array([0, 0])

因此,矩阵(数组(..)中额外的
array
似乎避免了混乱,尽管其深层原因对我来说仍然很神秘。

np.matrix
具有
copy=True
参数,
np.asmatrix
具有默认的假拷贝。
矩阵。uuu new_uuu
根据此副本返回
ndarray
输入(以及最终形状调整)。其他
数据
经过
np.array(data,…)
之后是
ndarray.\uuu new\uuu
调用。查看numpy/matrixlib/defmatrix.py代码了解更多详细信息。实际上,两者都使用
np.array
将列表转换为数组。其余的只是将该数组强制转换为
矩阵
子类。从一个大的列表开始,我看不到明显的时间差异(甚至与普通的
np.array(alist)
相比)。我们还可以使用2014年编写的“arr.view(np.matrix)”。现在
np.matrix
有一个悬而未决的警告。我认为演示作者只是使用了他习惯的编码风格,没有从一堆SO读者那里进行微调。