numpy 为什么我不能计算这个矩阵的argmin?

nszi6y05  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(144)

我的矩阵是(20,20)。
当我编码的时候type(d)是我的矩阵,它是:numpy.ndarray
当我编码的时候type(d[1,2])作为其输入的示例,其表示:numpy.float64
为了补充说明,我正在使用pytorch并将结果保存在np.matrix(20,20)中。
我想找到这个矩阵的argmin并编码:np.matrix.argmin(d)其中d是我的20*20矩阵。
但得到了错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-116-0e139e5c160d> in <module>
----> 1 np.matrix.argmin(d)

~\Anaconda3\lib\site-packages\numpy\matrixlib\defmatrix.py in argmin(self, axis, out)
    755 
    756         """
--> 757         return N.ndarray.argmin(self, axis, out)._align(axis)
    758 
    759     def ptp(self, axis=None, out=None):

AttributeError: 'numpy.int64' object has no attribute '_align'

如何求这样矩阵的argmin?

toe95027

toe950271#

二维阵列:

In [167]: A = np.array([[1,3,2],[5,2,1],[3,5,1]])

使用argmin-平面或带轴的正确方法:

In [168]: A.argmin()
Out[168]: 0    
In [169]: A.argmin(axis=1)
Out[169]: array([0, 2, 2], dtype=int64)

您使用argmin的错误方式:

In [170]: np.matrix.argmin(A, axis=1)
AttributeError: 'numpy.ndarray' object has no attribute '_align'

如果我们首先创建一个np.matrix

In [171]: M = np.matrix(A)    
In [172]: M
Out[172]: 
matrix([[1, 3, 2],
        [5, 2, 1],
        [3, 5, 1]])

我们可以使用它的argmin方法:

In [173]: M.argmin(1)    # np.matrix.argmin(M, axis=1) also works
Out[173]: 
matrix([[0],
        [2],
        [2]], dtype=int64)

相关问题