# ‘list’ object has no attribute ‘shape’

Each Answer to this Q is separated by one/two green lines.

how to create an array to numpy array?

``````def test(X, N):
[n,T] = X.shape
print "n : ", n
print "T : ", T

if __name__=="__main__":

X = [[[-9.035250067710876], [7.453250169754028], [33.34074878692627]], [[-6.63700008392334], [5.132999956607819], [31.66075038909912]], [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]]]
N = 200
test(X, N)
``````

I am getting error as

``````AttributeError: 'list' object has no attribute 'shape'
``````

So, I think I need to convert my X to numpy array?

Use `numpy.array` to use `shape` attribute.

``````>>> import numpy as np
>>> X = np.array([
...     [[-9.035250067710876], [7.453250169754028], [33.34074878692627]],
...     [[-6.63700008392334], [5.132999956607819], [31.66075038909912]],
...     [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]]
... ])
>>> X.shape
(3L, 3L, 1L)
``````

NOTE `X.shape` returns 3-items tuple for the given array; `[n, T] = X.shape` raises `ValueError`.

Alternatively, you can use `np.shape(...)`

For instance:

``````import numpy as np
a=[1,2,3]
``````

and `np.shape(a)` will give an output of `(3,)`

``````import numpy
``````

It’s still not going to do what you want; you have more bugs, like trying to unpack a 3-dimensional shape into two target variables in `test`.

?f you have list, you can print its shape as if it is converted to array

``````import numpy as np
print(np.asarray(X).shape)
``````

list object in python does not have ‘shape’ attribute because ‘shape’ implies that all the columns (or rows) have equal length along certain dimension.

Let’s say list variable a has following properties:

``````a = [[2, 3, 4]
[0, 1]
[87, 8, 1]]
``````

it is impossible to define ‘shape’ for variable ‘a’.
That is why ‘shape’ might be determined only with ‘arrays’ e.g.

``````b = numpy.array([[2, 3, 4]
[0, 1, 22]
[87, 8, 1]])
``````

I hope this explanation clarifies well this question.

If the type is list, use `len(list)` and `len(list[0])` to get the row and column.

``````l = [[1,2,3,4], [0,1,3,4]]
``````

`len(l)` will be 2.

`len(l[0])` will be 4.

Firstly you have to import numpy library (refer code for making a numpy array).
`shape` only gives the output only if the variable is attribute of numpy library. In other words it must be a np.array or any other data structure of numpy.
E.g.

``````import numpy
a=numpy.array([[1,1],[1,1]])
a.shape
``````
``````(2, 2)
``````

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .