3
#Code

import numpy as np    
np.random.seed(124)
x_2d = np.random.randint(1,50,(3,4,5))
print("I am getting wrong output => {}".format(x_2d[0][:][1]))
print("This is what I want => {} ".format(x_2d[0,:,1]))

# Code Ended

# Output for above code

I am getting wrong output => [42  1 21 29 15]
This is what I want => [29  1 22 49] 

I am new to NumPy so I was just experimenting on numpy array selection techniques. I came to know that we can use square bracket method or comma method. But I encountered a problem. I am trying to extract column index 1 of array 0. But I am getting different outputs when I use both techniques. I have attached code snippets and outputs. Can anyone guide me where did I go wrong ?

2 Answers 2

2

x[0][:][1] is equivalent to x[0, 1, :], which is also equivalent to x[0][1].

Reason being [:] alone basically means "copy this array", both in basic Python as well as Numpy. So you can read x[0][:][1] as "take the first element of array x, make a copy of it, then take the second element of the result."

[:] does not mean "skip a dimension".

Sign up to request clarification or add additional context in comments.

Comments

1

When you call x_2d[0][:][1], first you get the first matrix x_2d[0]:

>>> first = x_2d[0]
>>> first
array([[15, 29, 18,  8,  3],
       [42,  1, 21, 29, 15],
       [22, 22, 28, 10, 31],
       [47, 49, 41, 10, 10]])

When you call first[:] you gonna receive exactly first, since you asking for all lines in first:

>>> second = first[:]
>>> second
array([[15, 29, 18,  8,  3],
       [42,  1, 21, 29, 15],
       [22, 22, 28, 10, 31],
       [47, 49, 41, 10, 10]])

So when you get second[1] you get the line of index 1

>>> third = second[1]
>>> third
array([42,  1, 21, 29, 15])

However when you ask for x_2d[0,:,1], numpy interprets it as:

"From matrix 0 give me column 1 from the matrix composed by lines 0,1,2,3)"

So if you ask for x_2d[1,0:2,3] the result will be [18, 2].

Conclusion: numpy does not interpret x[0,:,1] in the same way of x[0][:][1]. You can read more in the NumPy documentation here.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.