[[ ][ ][ ]]]now if we want to access the third columnwe can use two different notations to access that columnin [ ]arr[:,:, out[ ]array([ ][ ][ ]]we can also use dot notation in the following way both of the methods gets us the same value but the dot notation is concise the dot notation stands for as many colons as required to complete an indexing operation in [ ]arr, out[ ]array([ ][ ][ ]]advanced indexing the difference in advanced indexing and basic indexing comes from the type of object being used to reference the array if the object is an ndarray object (data type int or boolor non-tuple sequence object or tuple object containing an ndarray (data type integer or bool)then the indexing being done on the array is said to be advanced indexing ##note advanced indexing will always return the copy of the original array data integer array indexingthis advanced indexing occurs when the reference object is also an array the simplest type of indexing is when we provide an array that' equal in dimensions to the array being accessed for examplein [ ]arr np arange( reshape( , arr out[ ]array([[ ][ ][ ]]in [ ]arr[[ , , ],[ , , ]out[ ]array([ ]in this example we have provided an array in which the first part identifies the rows we want to access and the second identifies the columns which we want to address this is quite similar to providing collective element-wise address