我正在做以下事情:
import numpy as np
#...
G = np.dot(data.T, data) #data is a numpy matrix
H = np.copy(G)
print "G:"
print G
print "H"
print H
print type(H)
print "Op using G"
print G.dot(v.T) - W.dot(v.dot(V).T) #v, W, and V are ndarrays
print "Op using H"
print H.dot(v.T) - W.dot(v.dot(V).T)
输出如下:
G:
[[ 1.21 0.2 0.86 0.7 0.7 ]
[ 0.2 0.07 0.14 0.17 0.08]
[ 0.86 0.14 0.76 0.6 0.76]
[ 0.7 0.17 0.6 0.54 0.55]
[ 0.7 0.08 0.76 0.55 0.89]]
(5, 5)
H:
[[ 1.21 0.2 0.86 0.7 0.7 ]
[ 0.2 0.07 0.14 0.17 0.08]
[ 0.86 0.14 0.76 0.6 0.76]
[ 0.7 0.17 0.6 0.54 0.55]
[ 0.7 0.08 0.76 0.55 0.89]]
Op using G
[[ -1.71e-01 -5.49e-02 -2.78e-17 -4.59e-02 1.34e-01]]
Op using H
[ -1.71e-01 -5.49e-02 -2.78e-17 -4.59e-02 1.34e-01]
如果H是G的精确副本,为什么结果会有所不同?
答案 0 :(得分:0)
在写这个问题的时候得到了它。尽管它们的等效表示G
和H
具有不同的类型。
print type(G)
print type(H)
输出:
<class 'numpy.matrixlib.defmatrix.matrix'>
<type 'numpy.ndarray'>
对我来说,numpy.copy总是返回一个带有参数内容而不是同一个类的对象的数组这一事实是违反直觉的。