array.shape() giving error tuple not callable
Asked Answered
B

3

49

I have a 2D numpy array called results, which contains its own array of data, and I want to go into it and use each list:

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

This is the output I get:

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

I don't understand why y_pred is not a regular array and why it's being considered a tuple, I've assigned it to be an array using r.

Bergmann answered 4/8, 2014 at 18:26 Comment(0)
L
98

shape is just an attribute, not a method. Just use y_pred.shape (no parentheses).

(The error message isn't telling you that y_pred is a tuple, it's telling you that y_pred.shape is a tuple.)

Linneman answered 4/8, 2014 at 18:26 Comment(1)
I think there might be an issue with Python2 needed shape() and Python3 needing shape, but I don't have both versions with me.Conjoint
C
1

As BrenBarn mentioned, .shape is an attribute of ndarrays (hasattr(np.array([]), 'shape') returns True). There's also np.shape() function that fetches this attribute. It even works on other Python objects such as lists, tuples etc.

np.shape(y_pred)
Codicodices answered 17/3, 2023 at 22:14 Comment(0)
B
1

The function call should be "y_pred.shape". And if you want to resize your array you should try "y_pred.reshape(n,m)".

Bugbane answered 18/3, 2023 at 0:56 Comment(1)
Could you format your code using backticks, like this y_pred.shape?Consensus

© 2022 - 2024 — McMap. All rights reserved.