文章目录
属性方法1. arange(起始值,中止值,步长)2. linspace(起始值,中止值,数值个数)3. 向量运算4. 向量筛选5. 矩阵间乘法6. 随机数矩阵7. 矩阵最大值,最小值,求和8. 求最大值,最小值索引9. 矩阵转置10. 截断函数11. 索引12. 循环13. 将矩阵转变为向量14. 向量合并15. 插入新的维度16. 矩阵分割17. copy()
属性
ndim: 维数shape: 行数和列数size元素个数 可以在使用array函数时指定 dtype参数
方法
1. arange(起始值,中止值,步长)
区间为前闭后开
c
= np
.arange
(0,12,2).reshape
(2,3)
c2
= np
.arange
(15,5,-1)
c
,c2
2. linspace(起始值,中止值,数值个数)
区间前闭后闭
d
= np
.linspace
(0,2,5)
d
3. 向量运算
直接加减乘除即可
a
= np
.array
([10,20,30,40])
b
= np
.arange
(4)
print(a
-b
)
幂运算用 两个乘号(**)表示
print(a
**2)
4. 向量筛选
a
= np
.array
([10,20,30,40])
print(a
< 25)
5. 矩阵间乘法
np.dot(矩阵a,矩阵b)a.dot(b)
上述两种方法皆可
c
= np
.arange
(12).reshape
(3,4)
d
= np
.arange
(13,25).reshape
(4,3)
e
= np
.dot
(c
,d
)
e2
= c
.dot
(d
)
e
,e2
6. 随机数矩阵
f
= np
.random
.random
((2,3))
7. 矩阵最大值,最小值,求和
可以对全局求最大,最小,求和;也可对某行或者某列进行求最大,最小,求和。axis参数指定数轴
f
= np
.random
.random
((2,3))
print(np
.sum(f
))
print(np
.min(f
,axis
= 0))
print(np
.max(f
,axis
= 1))
8. 求最大值,最小值索引
f
= np
.random
.random
((2,3))
print(f
)
print(np
.argmin
(f
,axis
= 1))
print(np
.argmax
(f
,axis
= 0))
9. 矩阵转置
transpose()函数矩阵的T属性
g
= np
.arange
(20,4,-2).reshape
(2,-1)
print(g
)
print(g
.transpose
())
print(g
.T
)
10. 截断函数
clip(min,max):将矩阵中元素大于max的赋值为max,小于min的赋值为min
h
= np
.arange
(20,10,-1).reshape
(2,5)
h
= h
.clip
(13,18)
h
11. 索引
矩阵不指定列数的话,默认为一整行可以用:符号来表示全部
i
= np
.arange
(3,15)
i
= i
.reshape
(3,4)
print(i
)
print(i
[2])
print(i
[1][2])
print(i
[:,2])
print(i
[1,1:2])
12. 循环
for 循环默认指定迭代一行,没有直接的列迭代如果想遍历矩阵每个元素,就先将矩阵转化为向量
i
= np
.arange
(3,15)
i
= i
.reshape
(3,4)
for row
in i
:
print(row
)
13. 将矩阵转变为向量
flatten()
i
= np
.arange
(3,15)
i
= i
.reshape
(3,4)
print(i
)
print(i
.flatten
())
14. 向量合并
vstack(向量a,向量b):上下合并hstack(向量a,向量b):左右合并
j
= np
.array
([1,1,1])
k
= np
.array
([2,2,2])
print(np
.vstack
((j
,k
)))
print(np
.hstack
((j
,k
)))
15. 插入新的维度
在行或列插入 np.newaxis 表示在行或者列插入一个维度,具体可用shape属性查看
j
= np
.array
([1,1,1])
j1
= j
[np
.newaxis
,:]
j2
= j
[:,np
.newaxis
]
print(j
)
print(j1
.shape
)
print(j2
)
print(j2
.shape
)
16. 矩阵分割
np.split( 矩阵,划分块数,axis):将矩阵通过指定的轴均等划分为目标块数,如果不能均等则报错;axis = 0表示水平划分;axis = 1表示垂直划分
np.vsplit(矩阵,块数):横向划分,必须均等划分
np.hsplit(矩阵,块数):纵向划分,必须均等划分
np.array_split() : 参数同np.split() ,不过可以不均等划分
l
= np
.arange
(12).reshape
(3,4)
print(l
)
print(np
.split
(l
,3,axis
= 0))
print(np
.split
(l
,2,axis
= 1))
print(np
.vsplit
(l
,3))
print(np
.hsplit
(l
,2))
print(np
.array_split
(l
,3,axis
= 1))
17. copy()
向量,矩阵的赋值但不关联(如果只是简单等号赋值,当数其中一个数据改变,其他也会跟着改变)
m
= np
.array
([1,2,3])
n
= m
m
[0] = 5
print(n
)
n
[0] = 10
print(m
)
m
= np
.array
([1,2,3])
n
= m
.copy
()
m
[0] = 5
print(n
)
n
[0] = 10
print(m
)