我在python中有一些函数返回numpy.数组地址:
matrix = np.array([0.,0.,0.,0.,0.,0.,1.,1.,1.,0.],
[0.,0.,0.,1.,1.,0.,0.,1.,0.,0.])
def some_function:
rows1, cols1 = numpy.nonzero(matrix)
cols2 = numpy.array([6,7,8,3,4,7])
rows2 = numpy.array([0,0,0,1,1,1])
print numpy.array_equal(rows1, rows2) # returns True
print numpy.array_equal(cols1, cols2) # returns True
return (rows1, cols1) # or (rows2, cols2)
它通常应该提取矩阵(rows1,cols1)的非零项的索引。但是,我也可以手动提取索引(rows2、cols2)。问题是程序返回不同的结果,这取决于函数返回的是(rows1, cols1)
还是(rows2, cols2)
,尽管数组应该相等。你知道吗
我应该补充一下,这段代码是在pyipopt的上下文中使用的,它调用了一个c++软件包IPOPT。然后问题就出现在这个包中。你知道吗
是不是数组不是“完全”相等?我想说,他们一定是因为我没有修改任何东西,但返回一个,而不是另一个。你知道吗
你知道怎么调试这个问题吗?你知道吗
您可以检查where数组不相等:
但是您所做的还不清楚,首先在numpy中没有
nonzeros
函数,只有一个nonzero返回一个坐标元组。您是否只使用与行对应的行?你知道吗相关问题 更多 >
编程相关推荐