In [1]:
import numpy as np

In [2]:
l = list(range(10))
print(l)


[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [3]:
print(l[4:8])


[4, 5, 6, 7]

In [4]:
print(l[-5:-2])


[5, 6, 7]

In [5]:
print(l[::-1])


[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

In [6]:
a = np.arange(10)
print(a)


[0 1 2 3 4 5 6 7 8 9]

In [7]:
print(a[4:8])


[4 5 6 7]

In [8]:
print(a[-5:-2])


[5 6 7]

In [9]:
print(a[::-1])


[9 8 7 6 5 4 3 2 1 0]

In [10]:
a[3:6] = 100
print(a)


[  0   1   2 100 100 100   6   7   8   9]

In [11]:
a[3:6] = [100, 200, 300]
print(a)


[  0   1   2 100 200 300   6   7   8   9]

In [12]:
# a[3:6] = [100, 200, 300, 400]
# ValueError: cannot copy sequence with size 4 to array axis with dimension 3

In [13]:
a = np.arange(10)
print(a)


[0 1 2 3 4 5 6 7 8 9]

In [14]:
print(a[2:8:2])


[2 4 6]

In [15]:
a[2:8:2] = 100
print(a)


[  0   1 100   3 100   5 100   7   8   9]

In [16]:
a[2:8:2] = [100, 200, 300]
print(a)


[  0   1 100   3 200   5 300   7   8   9]

In [17]:
a = np.arange(12).reshape((3, 4))
print(a)


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

In [18]:
print(a[1:, 1:3])


[[ 5  6]
 [ 9 10]]

In [19]:
print(a[1:, :])


[[ 4  5  6  7]
 [ 8  9 10 11]]

In [20]:
print(a[1:])


[[ 4  5  6  7]
 [ 8  9 10 11]]

In [21]:
print(a[1])


[4 5 6 7]

In [22]:
print(a[1].shape)


(4,)

In [23]:
print(a[1:2])


[[4 5 6 7]]

In [24]:
print(a[1:2].shape)


(1, 4)

In [25]:
print(a[:, 1:3])


[[ 1  2]
 [ 5  6]
 [ 9 10]]

In [26]:
print(a[:, 1])


[1 5 9]

In [27]:
print(a[:, 1].shape)


(3,)

In [28]:
print(a[:, 1:2])


[[1]
 [5]
 [9]]

In [29]:
print(a[:, 1:2].shape)


(3, 1)

In [30]:
a = np.arange(12).reshape((3, 4))
print(a)


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

In [31]:
print(a[1:, 1:3])


[[ 5  6]
 [ 9 10]]

In [32]:
a[1:, 1:3] = 100
print(a)


[[  0   1   2   3]
 [  4 100 100   7]
 [  8 100 100  11]]

In [33]:
a[1:, 1:3] = [100, 200]
print(a)


[[  0   1   2   3]
 [  4 100 200   7]
 [  8 100 200  11]]

In [34]:
a[1:, 1:3] = [[100, 200], [300, 400]]
print(a)


[[  0   1   2   3]
 [  4 100 200   7]
 [  8 300 400  11]]

In [35]:
a = np.arange(12).reshape((3, 4))
print(a)


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

In [36]:
print(a[1:, ::2])


[[ 4  6]
 [ 8 10]]

In [37]:
a[1:, ::2] = 100
print(a)


[[  0   1   2   3]
 [100   5 100   7]
 [100   9 100  11]]

In [38]:
a[1:, ::2] = [100, 200]
print(a)


[[  0   1   2   3]
 [100   5 200   7]
 [100   9 200  11]]

In [39]:
a[1:, ::2] = [[100, 200], [300, 400]]
print(a)


[[  0   1   2   3]
 [100   5 200   7]
 [300   9 400  11]]

In [40]:
a = np.arange(12).reshape((3, 4))
print(a)


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

In [41]:
a_slice = a[1:, 1:3]
print(a_slice)


[[ 5  6]
 [ 9 10]]

In [42]:
a_slice[0, 0] = 100
print(a_slice)


[[100   6]
 [  9  10]]

In [43]:
print(a)


[[  0   1   2   3]
 [  4 100   6   7]
 [  8   9  10  11]]

In [44]:
a = np.arange(12).reshape((3, 4))
print(a)


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

In [45]:
a_slice_copy = a[1:, 1:3].copy()
print(a_slice_copy)


[[ 5  6]
 [ 9 10]]

In [46]:
a_slice_copy[0, 0] = 100
print(a_slice_copy)


[[100   6]
 [  9  10]]

In [47]:
print(a)


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

In [48]:
a = np.arange(12).reshape((3, 4))
print(a)


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

In [49]:
print(a[[0, 2], 1:3])


[[ 1  2]
 [ 9 10]]

In [50]:
a[[0, 2], 1:3] = 100
print(a)


[[  0 100 100   3]
 [  4   5   6   7]
 [  8 100 100  11]]

In [51]:
a[[0, 2], 1:3] = [100, 200]
print(a)


[[  0 100 200   3]
 [  4   5   6   7]
 [  8 100 200  11]]

In [52]:
a[[0, 2], 1:3] = [[100, 200], [300, 400]]
print(a)


[[  0 100 200   3]
 [  4   5   6   7]
 [  8 300 400  11]]

In [53]:
a_subset = a[[0, 2], 1:3]
print(a_subset)


[[100 200]
 [300 400]]

In [54]:
a_subset[0, 0] = -1
print(a_subset)


[[ -1 200]
 [300 400]]

In [55]:
print(a)


[[  0 100 200   3]
 [  4   5   6   7]
 [  8 300 400  11]]