Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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/numpy:在np.allclose()中使用自己的数据结构?哪里可以找到需求/它们是什么?_Python_Numpy_Magic Methods_Type Coercion - Fatal编程技术网

python/numpy:在np.allclose()中使用自己的数据结构?哪里可以找到需求/它们是什么?

python/numpy:在np.allclose()中使用自己的数据结构?哪里可以找到需求/它们是什么?,python,numpy,magic-methods,type-coercion,Python,Numpy,Magic Methods,Type Coercion,我正在实现一个矩阵积状态类,这是python/numpy中用于快速算法原型的某种特殊张量分解方案 我不认为已经有这样的事情发生了,我想自己去做,以获得对该计划的正确理解 我想要的是,如果我将给定的张量T以这种格式存储为T_-mps,我可以通过T_-mps[[i0,i1,…,iL]]访问重构的元素。这是通过getitem(self,key)方法实现的,并且工作良好 现在我想使用numpy.allclose(T,mps\T)来查看我的分解是否正确 但当我这样做时,我自己的类型会出现一个类型错误: T

我正在实现一个矩阵积状态类,这是python/numpy中用于快速算法原型的某种特殊张量分解方案

我不认为已经有这样的事情发生了,我想自己去做,以获得对该计划的正确理解

我想要的是,如果我将给定的张量T以这种格式存储为T_-mps,我可以通过T_-mps[[i0,i1,…,iL]]访问重构的元素。这是通过getitem(self,key)方法实现的,并且工作良好

现在我想使用numpy.allclose(T,mps\T)来查看我的分解是否正确

但当我这样做时,我自己的类型会出现一个类型错误:

TypeError:这些类型不支持函数,并且无法安全地强制到支持的类型

我查看了allclose的文档,据说该函数适用于“类似数组”的对象。现在,这个“类似数组”的概念是什么?我在哪里可以找到它的规范

也许我更好,实施我自己的allclose方法?但这在某种程度上是对轮子的重新发明,不是吗

谢谢你的帮助 提前感谢

numpy文档中使用的术语“arraylike”表示“可以传递给numpy.asarray()以使其返回适当的numpy.ndarray的任何内容”。大多数具有适当的
\u len\uuuuuuuuuu()
\uuu getitem\uuuuuuuuuuu()方法的序列都可以正常工作。请注意,
\uuu getitem\uuu(i)
必须能够接受
范围内的单个整数索引(len(self))
,而不仅仅是您似乎指出的索引列表。此
\uuu getitem\uuu(i)
的结果必须是numpy知道的原子值,如浮点或int,或者是如上所述的另一个序列。如果没有关于矩阵乘积状态实现的更多细节,我只能提供帮助。

getitem(I)
getitem(I)方法实际上不适合我的数据结构,因为张量的每个系数在内部存储为矩阵的乘积(因此得名)。我在这里发现了另一种方法:这里使用了array()函数,但将整个张量重建为numpy数组会破坏该方案的整体目的。因此,我想我将把工作转移到测试用例,使用getitem([…])函数对一些条目进行采样。无论如何,这只是为了调试目的。