arange详解

numpy.arange的基本属性

以下都默认x=np.arange(10)X=np.arange(15).reshape(3,5)

查询几维数组x.ndim

input: x=np.arange(10)
input: x
output: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
input: x.ndim
output: 1
查询元素个数
input: x.size
output: 10

查询操作

X[0][0]=X[0,0]
切片操作:
input: x[3:6]
output: array([3, 4, 5])
还可以有第三个参数表示步长
input: x[:10:2]
output: array([0, 2, 4, 6, 8])
二维数组进行切片操作时切片要在一个中括号内运算不要在两个中括号内进行操作
input: X[:3][:3]
output: Out[40]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
input: X[:3,:3]
output: array([[ 0, 1, 2],
[ 5, 6, 7],
[10, 11, 12]])

多维数组进行各种切片操作

input: X[:2,::2] //表示的是取前两行,在列向量中以步长为2的操作从头取到尾
output: array([[0, 2, 4],
[5, 7, 9]])
input: X[::-1,::-1] //行向量全部取到并以倒序的形式输出,列向量全部输出也以倒序的方式输出
output: array([[14, 13, 12, 11, 10],
[ 9, 8, 7, 6, 5],
[ 4, 3, 2, 1, 0]])
多维矩阵的降维处理
input: X[0]=X[0,:] //表示取第0行
output: array([0, 1, 2, 3, 4])
input: X[0].ndim
output: 1
input: X[:,2] //表示取第二行
output: array([ 2, 7, 12])
input: X[:,2].ndim
output: 1

利用赋值创建子矩阵时改变子矩阵的值,父矩阵的相应位置也会改变

input: subX=X[:2,:3]
input: subX
output: array([[100, 1, 2],
[ 5, 6, 7]])
input: subX[0,0]=100
input: subX
output: array([[100, 1, 2],
[ 5, 6, 7]])
input: X
output: array([[100, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[ 10, 11, 12, 13, 14]])
同样父矩阵的值改变子矩阵相应位置的值也会改变
input: X[0,0]=0
input: X
output: array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
input: subX
output: array([[0, 1, 2],
[5, 6, 7]])
利用arange的copy放法可以经过复制之后在赋值这样就在改变两者时就不会相互影响了
input: subX=X[:2,:3].copy()
input: subX
output: array([[0, 1, 2],
[5, 6, 7]])
input: subX[0,0]=101
input: X
output: array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])

shape和reshape方法

shape方法查看每个维度元素的个数
reshape方法由原来矩阵构成新的矩阵整个表达式是新矩阵
原矩阵不改变,还要注意的是新的矩阵的个数要与原矩阵的个数相同不能多也不能少
input: x.reshape(2,5)
output: array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
input: x
output: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

reshape方法还有自动计算参数的功能例如

x.reshape(10,-1) //表示将原数组转化为10行每行几个元素要求计算机自动计算
x.reshape(-1,10) //同理表示转化为10列

你可能感兴趣的:(机器学习/\python学习)