Reputation: 473
I am relatively new to python. I have a numpy array that has 3 dimensions. I know we can display only few elements using :
.
It seems to work just fine while I'm doing it starting from a small value, but at one point, it returns something different than a matrix.
I want to get the mean value for the array. So, for instance, given an array c
, I do numpy.mean(c[0:200][0:200][0:200])
. This works just fine. But increasing the starting point (i.e. c[200:][200:][200:]
) doesn't work and returns nan
. So, printing the result explains the nan value. But I don't get why c[200:][200:][200:]
returns this kind of answer.
Here's two examples:
In [68]: c.shape
Out[68]: (448, 433, 446)
In [63]: c[100:][100:][100:]
Out[63]:
array([[[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]],
[[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]],
[[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]],
...,
[[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]],
[[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]],
[[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]]])
In [67]: c[200:][200:][200:]
Out[67]: array([], shape=(0, 433, 446), dtype=float64)
Upvotes: 0
Views: 213
Reputation: 251355
You're indexing into the arrays improperly. The way to index on multiple dimensions is array[x, y, z]
, not array[x][y][z]
. So you want to do c[200:, 200:, 200:]
.
When you use a single index in brackets, it indexes into the first dimension. So when you do c[200:][200:][200:]
, you try to get the first 200 elements of the array along the first dimension every time. But that dimension is less than 600 elements long, so when you do it three times there's nothing left to get.
Upvotes: 7