目录
1、属性
ndim维数
size矩阵的维度
shape矩阵的大小总个数
dtype对象的元素类型
import numpy as np
a=np.array([[1,2,3],[2,3,4]])
print('ndim: ',a.ndim)
print('shape: ',a.shape)
print('size: ',a.size)
print('dtype: ',a.dtype)
****结果如下****
ndim: 2
shape: (2, 3)
size: 6
dtype: int32
2、创建函数
np.array()将数据转化为矩阵
np.arrange(n,m,p)生成n到m步长为p的矩阵
np.zeros()生成零矩阵
np.onems()生成1矩阵
A.reshape(m,n)将矩阵A重塑成m*n的矩阵
import numpy as np
a=np.array([[1,2,3],[2,3,4]])
b=np.arange(2,10,2)
c=b.reshape(2,2)
d=np.zeros(3)
e=np.ones(4)
print(a);print(b);print(c);print(d);print(e)
'''
[[1 2 3]
[2 3 4]]
[2 4 6 8]
[[2 4]
[6 8]]
[0. 0. 0.]
[1. 1. 1. 1.]
'''
3、基础运算
矩阵加减乘除,是对矩阵里对应位置的元素直接进行加减乘除。
dot是用来对矩阵进行矩阵运算.
aaa=np.array([1,2,3])
bbb=np.array([2,3,4])
ccc=np.array([[1],[2],[3]])
print(aaa+bbb)
print(aaa*bbb)
print(aaa/bbb)
print(np.dot(aaa,bbb))
print(np.dot(aaa,ccc))
***********
[3 5 7]
[ 2 6 12]
[0.5 0.66666667 0.75 ]
20
[14]
4、切片
numpy的切片和python基础数据结构是有相似的地方的,简单来说,就是取第几行第几列,也可以理解为嵌套的字典,但是有一点是不同的就是在取连续行或列的时候是不包括结束行或列的,如a[1:2,0:2]是指的a的第二行的前两列,而不是2、3行的1、2、3列。
a=np.arange(2,11).reshape(3,3)
print('打印a',a)
print('打印第2行',a[1])
print('打印第2行第3列',a[1][2])
print(a[1:2])
print(a[1:2,0:2])
print('打印行')
for i in a:
print(i)
print('打印列')
for j in a.T:
print(j)
****结果如下****
打印a [[ 2 3 4]
[ 5 6 7]
[ 8 9 10]]
打印第2行 [5 6 7]
打印第2行第3列 7
[[5 6 7]]
[[5 6]]
打印行
[2 3 4]
[5 6 7]
[ 8 9 10]
打印列
[2 5 8]
[3 6 9]
[ 4 7 10]
4、array合并
矩阵的合并分为水平方向的合并和竖直方向的合并,分别使用np.hstack()和np.vstack()。
aa=np.array([1,2,3])
bb=np.array([2,3,4])
c=np.vstack((aa,bb))
d=np.hstack((aa,bb))
print(c)
print(d)
********
[[1 2 3]
[2 3 4]]
[1 2 3 2 3 4]
5、array分割
矩阵的分割一般使用np.split(矩阵,分割成几份,分割方向),split()只能对矩阵进行均等分割,如六行只能分割成1、2、3、6部分,而不能分割成4部分或者5部分,想要进行不均等分割,需要使用np.array_split()。
a=np.arange(2,11).reshape(3,3)
print(np.split(a,3,axis=0))#默认为行
print(np.split(a,3,axis=1))#按列
print(np.array_split(a,2,0))#不均衡分割
print(np.vsplit(a,3))#省略axis参数,相当于使用split,axis等于0的情况
print(np.hsplit(a,3))#相当于使用split,axis等于1的情况
****
[array([[2, 3, 4]]), array([[5, 6, 7]]), array([[ 8, 9, 10]])]
[array([[2],
[5],
[8]]), array([[3],
[6],
[9]]), array([[ 4],
[ 7],
[10]])]
[array([[2, 3, 4],
[5, 6, 7]]), array([[ 8, 9, 10]])]
[array([[2, 3, 4]]), array([[5, 6, 7]]), array([[ 8, 9, 10]])]
[array([[2],
[5],
[8]]), array([[3],
[6],
[9]]), array([[ 4],
[ 7],
[10]])]
6、numpy里的浅拷贝和深拷贝
通过赋值的方式,对numpy的矩阵直接进行复制时是相当于对矩阵的浅拷贝,对每个矩阵的修改都会应影响到其他复制的矩阵,想要复制不会互相关联的矩阵,需要使用np.copy()进行复制。
shiyan1=np.array([1,2,3,4])
shiyan2=shiyan1
shiyan3=shiyan2
shiyan4=np.copy(shiyan1)
print(shiyan1 is shiyan2)
shiyan1[1]=22
print(shiyan1)
print(shiyan2)
print(shiyan3)
print(shiyan4)
shiyan2[3]=44
print(shiyan1)
print(shiyan2)
print(shiyan3)
print(shiyan4)
*********
True
[ 1 22 3 4]
[ 1 22 3 4]
[ 1 22 3 4]
[1 2 3 4]
[ 1 22 3 44]
[ 1 22 3 44]
[ 1 22 3 44]
[1 2 3 4]