numpy 属性错误:“tuple”对象没有属性“shape”

gc0ot86w  于 2023-03-18  发布在  其他
关注(0)|答案(2)|浏览(1011)

所以我一直在写一个代码来标准化矩阵的元素,我使用的函数如下:

def preprocess(Data):
    if stdn ==True:
       st=np.empty((Data.shape[0],Data.shape[1]))
       for i in xrange(0,Data.shape[0]):
           st[i,0]=Data[i,0]
       for i in xrange(1,Data.shape[1]):
           st[:,i]=((Data[:,i]-np.min(Data[:,i]))/(np.ptp(Data[:,i])))       
           np.random.shuffle(st)
       return st
    else:
       return Data

它在类外部工作得很好,但在类内部使用时,它给我带来了以下错误:

AttributeError: 'tuple' object has no attribute 'shape'

你知道我该怎么修吗?
P.S.这是一个KNN分类代码。

nkkqxpd9

nkkqxpd91#

根据您发布的错误,Data属于tuple类型,并且没有为数据定义属性shape。您可以在调用preprocess函数时尝试强制转换Data,例如:

preprocess(numpy.array(Data))
7d7tgy0s

7d7tgy0s2#

.shape是numpy数组的一个属性,元组没有这样的属性,但是可以在元组上调用numpy.shape来获得它的“形状”。

import numpy as np
sh = np.shape(Data)

一般来说(OP除外),获取元组的长度更有用:

len(Data)

相关问题