import numpy as np
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.shape) #结果返回一个tuple元组 (2L, 5L)
print(a.shape[0]) #获得行数,返回 2
print(a.shape[1]) #获得列数,返回 5
print(a[0:1]) #截取第一行,返回 [[1 2 3 4 5]]
print(a[1,2:5]) #截取第二行,第三、四列,返回 [8 9]
print(a[1,:]) #截取第二行,返回 [ 6 7 8 9 10]
b = a[a>6] # 截取矩阵a中大于6的元素,范围的是一维数组
print(b) # 返回 [ 7 8 9 10]
矩阵合并
a1 = np.array([
[1,2],
[3,4]])
a2 = np.array([
[5,6],
[7,8]])
#!注意 参数传入时要以列表list或元组tuple的形式传入
print(np.hstack([a1,a2]))
#横向合并,返回结果如下
[[1 2 5 6]
[3 4 7 8]]
print(np.vstack((a1,a2)))
#纵向合并,返回结果如下
[[1 2]
[3 4]
[5 6]
[7 8]]
#等价于 np.vstack( (a1,a2) )
np.concatenate( (a1,a2), axis=0 )
#等价于 np.hstack( (a1,a2) )
np.concatenate( (a1,a2), axis=1 )
创建矩阵
a = np.arange(10) # 默认从0开始到10(不包括10),步长为1
print(a) # 返回 [0 1 2 3 4 5 6 7 8 9]
a1 = np.arange(5,10) # 从5开始到10(不包括10),步长为1
print(a1) # 返回 [5 6 7 8 9]
a2 = np.arange(5,20,2) # 从5开始到20(不包括20),步长为2
print(a2) # 返回 [ 5 7 9 11 13 15 17 19]
a = np.linspace(0,10,7) # 生成首位是0,末位是10,含7个数的等差数列
print(a) # 返回 [ 0. 1.66666667 3.33333333 5. 6.66666667 8.33333333 10. ]
# linspace用于生成等差数列,而logspace用于生成等比数列。
a = np.logspace(0,2,5) # 用于生成首位是100,末位是102,含5个数的等比数列。
print(a) # 结果[ 1. 3.16227766 10. 31.6227766 100. ]
a_ones = np.ones((3,4)) # 创建3*4的全1矩阵
print(a_ones)
# 结果
[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
a_zeros = np.zeros((3,4)) # 创建3*4的全0矩阵
print(a_zeros)
# 结果
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
a_eye = np.eye(3) # 创建3阶单位矩阵
print(a_eye)
# 结果
[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
a_empty = np.empty((3,4)) # 创建3*4的空矩阵
print(a_empty)
# 结果
[[ 1.78006111e-306 -3.13259416e-294 4.71524461e-309 1.94927842e+289]
[ 2.10230387e-309 5.42870216e+294 6.73606381e-310 3.82265219e-297]
[ 6.24242356e-309 1.07034394e-296 2.12687797e+183 6.88703165e-315]]
a = "abcdef"
b = np.fromstring(a,dtype=np.int8) # 因为一个字符为8为,所以指定dtype为np.int8
print(b) # 返回 [ 97 98 99 100 101 102]
def func(i,j):
return i+j
a = np.fromfunction(func,(5,6))
# 第一个参数为指定函数,第二个参数为列表list或元组tuple,说明矩阵的大小
print(a)
# 返回
[[ 0. 1. 2. 3. 4. 5.]
[ 1. 2. 3. 4. 5. 6.]
[ 2. 3. 4. 5. 6. 7.]
[ 3. 4. 5. 6. 7. 8.]
[ 4. 5. 6. 7. 8. 9.]]
矩阵运算
a1 = np.array([[4,5,6],[1,2,3]])
a2 = np.array([[6,5,4],[3,2,1]])
print(a1+a2) # 相加
# 结果
[[10 10 10]
[ 4 4 4]]
# 点乘
a1 = np.array([[1,2,3],[4,5,6]]) # a1为2*3矩阵
a2 = np.array([[1,2],[3,4],[5,6]]) # a2为3*2矩阵
print(a1.shape[1]==a2.shape[0]) # True, 满足矩阵乘法条件
print(a1.dot(a2))
# a1.dot(a2)相当于matlab中的a1*a2
# 而python中的a1*a2相当于matlab中的a1.*a2
# 结果
[[22 28]
[49 64]]
print(a1/a2) # 整数相除取商
# 结果
[[0 1 1]
[0 1 3]]
print(a1%a2) # 相除取余数
# 结果
[[4 0 2]
[1 0 0]]
# 矩阵的逆
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(lg.inv(a))
# 结果
[[ -4.50359963e+15 9.00719925e+15 -4.50359963e+15]
[ 9.00719925e+15 -1.80143985e+16 9.00719925e+15]
[ -4.50359963e+15 9.00719925e+15 -4.50359963e+15]]
# 最大、最小、平均、中值
# 和、累积和
# 乘、累积乘