数组.shape() 给出错误元组不可调用。

47

我有一个名为results的2D numpy数组,它包含自己的数据数组,我想进入它并使用每个列表:

for r in results:
    print "r:"
    print r
    y_pred = np.array(r)
    print y_pred.shape()

这是我得到的输出:
r:
[ 25.  25.  25.  25.  25.  25.  26.  26.  26.  26.  26.  22.  27.  27.  42.
  23.  23.  23.  28.  28.  28.  44.  29.  29.  30.  30.  30.  18.  18.  18.
  19.  30.  17.  17.  17.  17.   2.  19.   2.  17.  17.  17.  17.  17.  17.
   4.  17.  17.  41.   7.  17.  19.  19.  19.  10.  32.   4.  19.  34.  19.
  34.  34.  34.  34.  34.  34.  20.  20.  20.  36.  36.  36.   4.  36.  36.
  22.  22.  22.  22.  22.  22.  23.  23.  23.  27.  27.  27.  24.  39.  39.
  10.  10.  10.   6.  10.  10.  11.  11.  11.  11.  11.  11.  12.  12.  12.
  12.  12.  12.  13.  13.  13.  14.  14.  14.  15.  15.  15.   1.  17.   1.
   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.
  19.  19.  19.   2.   2.   4.   3.   3.   3.   4.   4.   4.   4.   4.   4.
   4.  19.   4.   4.   4.  17.   5.   5.   5.   6.   6.   6.   6.   6.   6.
   7.   7.   7.   7.   7.   7.   8.   8.   8.   8.   8.   8.   9.   9.   9.
  23.  38.  38.  34.  34.  10.  17.  17.  26.   0.  42.   0.  18.  32.  32.
   0.   0.  21.  38.  38.  38.  27.  27.  27.   0.   0.   0.  34.   2.   2.
   0.  26.  26.  36.   0.  36.  36.  36.  23.   0.  27.  38.  25.  25.  25.
  26.  26.  26.   0.  15.  15.  32.  38.  38.   0.  32.  32.  32.  41.  32.
   7.  34.  32.  42.  34.  34.  36.  36.  25.  32.  32.  32.  36.  17.   8.
  32.  17.  38.   3.   3.   3.  18.  18.  18.   0.   1.   1.  34.   1.   1.
  34.  17.  17.  34.  34.  34.  34.  34.  34.  17.  17.  17.  24.   2.  32.
   2.   2.   2.   0.   2.   2.   0.  34.  34.   0.   1.   1.  38.  23.  38.]
Traceback (most recent call last):
  File "C:\Users\app\Documents\Python Scripts\gbc_classifier_test.py", line 93, in <module>
    print y_pred.shape()
TypeError: 'tuple' object is not callable

我不明白为什么y_pred不是一个普通的数组,而被认为是一个元组,我已经使用r将其分配为一个数组。

3个回答

97

shape只是一个属性,不是一个方法。只需使用y_pred.shape(没有括号)。

(错误信息并不是告诉你y_pred是一个元组,而是告诉你y_pred.shape是一个元组。)


2
我认为Python2需要使用shape(),而Python3需要使用shape,但是我手头没有这两个版本。 - bballdave025

1
正如BrenBarn所提到的,.shape是ndarrays的一个属性(hasattr(np.array([]), 'shape')返回True)。还有一个np.shape()函数可以获取此属性。它甚至适用于其他Python对象,如列表、元组等。
np.shape(y_pred)

1
函数调用应该是 "y_pred.shape"。如果你想要调整数组大小,你可以尝试使用 "y_pred.reshape(n,m)"。

你能否使用反引号格式化你的代码,就像这样 y_pred.shape - Lover of Structure

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接