我正在实现一个矩阵乘积状态类,它是python/numpy中用于快速算法原型的一种特殊的张量分解方案。
我不认为已经有这样的事情,我想自己去做,以便对这个计划有一个适当的了解。
我想要的是,如果我以T_mps的形式存储给定的张量T,我可以通过T_mps[ i0,i1,.,iL ]访问重构的元素。这是通过getitem(self,key)方法实现的,并且工作得很好。
现在我想使用numpy.allclose(T,mps_T)来验证我的分解是否正确。
但是,当我这样做时,我会得到我自己的类型的类型错误:
TypeError:这些类型不支持的函数,并且不能安全地强制使用支持的类型
我看了allclose的文档,据说该函数适用于“类似数组”的对象。现在,这个“数组类似”的概念是什么,我在哪里可以找到它的规范?
也许我更好,实现我自己的全封闭方法?但这会在一定程度上重新发明车轮,不是吗?
感谢您的帮助,谢谢
发布于 2012-03-21 10:03:17
在numpy文档中使用了"arraylike“这个术语,意思是”可以传递给numpy.asarray()的任何东西都可以返回适当的numpy.ndarray“。使用适当的__len__()和__getitem__()方法的大多数序列工作正常。请注意,__getitem__(i)必须能够接受range(len(self))中的单个整数索引,而不仅仅是您似乎表示的索引列表。这个__getitem__(i)的结果必须是numpy所知道的原子值,比如float或int,或者是上面所述的另一个序列。如果没有更多关于Matrix实现的详细信息,这就是我所能帮助的全部。
https://stackoverflow.com/questions/9801235
复制相似问题