我试图找到比较两个PyArrayObject的函数--类似于相等,但我没有找到任何东西。你知道这样的功能吗?
如果没有-如何将这个numpy array_equal导入到我的C代码中?
发布于 2015-12-28 00:59:56
这是array_equal的代码
def array_equal(a1, a2):
try:
a1, a2 = asarray(a1), asarray(a2)
except:
return False
if a1.shape != a2.shape:
return False
return bool(asarray(a1 == a2).all())如您所见,它不是c-api级函数。在确保两个输入都是数组之后,该形状匹配之后,它执行一个元素==测试,然后是all。
这在浮点数上不可靠。对国家和布尔人来说没问题。
c-api中可能有某种相等的函数,但它的克隆可能不是您所需要的。
PyArray_CountNonzero(PyArrayObject* self)可能是个很好的功能。我记得在前面深入研究代码时,PyArray_Nonzero使用它来确定要分配和返回的数组的大小。您可以为它提供一个对象,用于比较2个数组的元素(无论以何种方式给出dtype),然后测试非零计数。
或者,您可以构造自己的迭代器,只要得到一对不相等的元素,它就会退出。使用nditer获得整个阵列的广播功率。
https://stackoverflow.com/questions/34486065
复制相似问题