import numpy as np

x = np.arange(start=0,stop=15,step=1,dtype=int).reshape(3,5)
#reshape一个维度可以置为-1，自动计算，但一定要能整除
#x = np.arange(start=0,stop=15,step=1,dtype=int).reshape(3,-1)
print(x)
'''
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
'''



#维度
#print(x.ndim)
#2

#print(x.shape)
#(3, 5)

#元素个数
#print(x.size)
#15

#访问元素建议写法
#print(x[2,3])
#13

#切片方式，获取前2行，前3列。注意逗号后面必须有空格！
#subx = x[:2, :3]
#print(subx)
'''
[[0 1 2]
 [5 6 7]]
'''

#切片方式，获取前2行，间隔为2取。注意逗号后面必须有空格！
#print(x[:2, ::2])
'''
[[0 2 4]
 [5 7 9]]
'''

#切片方式，获取行逆序，列逆序。注意逗号后面必须有空格！
#print(x[::-1, ::-1])
'''
[[14 13 12 11 10]
 [ 9  8  7  6  5]
 [ 4  3  2  1  0]]
'''

#切片方式，获取第一列。注意逗号后面必须有空格！
#print(x[:, 0])
'''
[ 0  5 10]
'''

#考虑效率，子矩阵是引用的方式创建的，所以修改子矩阵数值，会同时修改原矩阵数值！反之也是如此
#subx = x[:2, :3]
#subx[0, 0 ] = 100
#print(x)
'''
[[100   1   2   3   4]
 [  5   6   7   8   9]
 [ 10  11  12  13  14]]
'''

#如果想互相不影响，需要全新copy出来一个矩阵
#subx = x[:2, :3].copy()
#subx[0, 0 ] = 100
#print(x)
'''
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
'''
