假定所有操作都事先导入numpy库
import numpy as np
1、平方根和次方根
B = np.array([0, 1, 2])
print(B)
print('----------')
#计算e的次方
print(np.exp(B))
print('----------')
#计算次方根
print(np.sqrt(B))
结果为:
[0 1 2]
----------
[ 1. 2.71828183 7.3890561 ]
----------
[ 0. 1. 1.41421356]
2、向下取整
a = np.floor(10 * np.random.random((3, 4)))
print(a)
结果为:
[[ 6. 8. 1. 7.]
[ 2. 2. 2. 7.]
[ 7. 1. 5. 7.]]
3、矩阵与向量的相互转换和矩阵的转置
print(a.ravel())
print('----------')
#向量转换为矩阵
a.shape = (6, 2)
print(a)
print('----------')
#矩阵转置
print(a.T)
结果为:
[ 6. 8. 1. 7. 2. 2. 2. 7. 7. 1. 5. 7.]
----------
[[ 6. 8.]
[ 1. 7.]
[ 2. 2.]
[ 2. 7.]
[ 7. 1.]
[ 5. 7.]]
----------
[[ 6. 1. 2. 2. 7. 5.]
[ 8. 7. 2. 7. 1. 7.]]
4、矩阵的拼接
a = np.floor(10 * np.random.random((2, 2)))
b = np.floor(10 * np.random.random((2, 2)))
print(a)
print('----------')
print(b)
print('----------')
#按行拼接
print(np.vstack((a, b)))
print('----------')
#按列拼接
print(np.hstack((a, b)))
结果为:
[[ 0. 9.]
[ 8. 0.]]
----------
[[ 5. 9.]
[ 1. 3.]]
----------
[[ 0. 9.]
[ 8. 0.]
[ 5. 9.]
[ 1. 3.]]
----------
[[ 0. 9. 5. 9.]
[ 8. 0. 1. 3.]]
5、矩阵的切分
a = np.floor(10 * np.random.random((2, 12)))
print(a)
print('----------')
#按列把a平均切成2份
print(np.hsplit(a, 2))
print('----------')
#按行把a平均切成2份
print(np.vsplit(a, 2))
print('----------')
#在特定位置进行切分(第3列和第7列)
print(np.hsplit(a, (3, 7)))
结果为:
[[ 8. 2. 7. 4. 0. 7. 8. 0. 7. 2. 7. 6.]
[ 2. 1. 7. 8. 6. 6. 1. 4. 4. 8. 3. 7.]]
----------
[array([[ 8., 2., 7., 4., 0., 7.],
[ 2., 1., 7., 8., 6., 6.]]), array([[ 8., 0., 7., 2., 7., 6.],
[ 1., 4., 4., 8., 3., 7.]])]
----------
[array([[ 8., 2., 7., 4., 0., 7., 8., 0., 7., 2., 7., 6.]]), array([[ 2., 1., 7., 8., 6., 6., 1., 4., 4., 8., 3., 7.]])]
----------
[array([[ 8., 2., 7.],
[ 2., 1., 7.]]), array([[ 4., 0., 7., 8.],
[ 8., 6., 6., 1.]]), array([[ 0., 7., 2., 7., 6.],
[ 4., 4., 8., 3., 7.]])]
6、变量赋值
#①赋ID,共用同一个ID,两者除变量名不同外完全相同
a = np.arange(12)
b = a
print(a is b)
b.shape = 3, 4
print(a.shape)
print(id(a))
print(id(b))
print('----------')
#②浅复制,不同的ID,但共用一组数据
c = a.view()
print(c is a)
c.shape = 2,6
print(a.shape)
c[0, 4] = 1234
print(a)
print(id(a))
print(id(c))
print('----------')
#③深复制,两个变量完全独立,相互无影响
d = a.copy()
print(a is d)
d[0, 0] = 999
print(a)
print(id(a))
print(id(d))
结果为:
True
(3, 4)
1981659786576
1981659786576
----------
False
(3, 4)
[[ 0 1 2 3]
[1234 5 6 7]
[ 8 9 10 11]]
1981659786576
1981659737904
----------
False
[[ 0 1 2 3]
[1234 5 6 7]
[ 8 9 10 11]]
1981659786576
1981659786336
7、最值
data = np.sin(np.arange(20)).reshape(5,4)
print(data)
print('----------')
#按列返回最大值的索引
ind = data.argmax(axis = 0)
print(ind)
print('----------')
data_max = data[ind, range(data.shape[1])]
print(data_max)
结果为:
[[ 0. 0.84147098 0.90929743 0.14112001]
[-0.7568025 -0.95892427 -0.2794155 0.6569866 ]
[ 0.98935825 0.41211849 -0.54402111 -0.99999021]
[-0.53657292 0.42016704 0.99060736 0.65028784]
[-0.28790332 -0.96139749 -0.75098725 0.14987721]]
----------
[2 0 3 1]
----------
[ 0.98935825 0.84147098 0.99060736 0.6569866 ]
8、矩阵扩充
a = np.arange(0, 40, 10)
print(a)
#将矩阵扩充为2行2列,每个元素的值都为a
b = np.tile(a, (2, 2))
print(b)
结果为:
[ 0 10 20 30]
[[ 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30]]
9、排序
a = np.array([[4, 3, 5],[1, 2, 1]])
print(a)
print('----------')
#按行进行顺序排序
b = np.sort(a, axis = 1)
print(b)
#等同于
#a.sort(axis = 1)
#print(a)
print('----------')
a = np.array([5, 3, 1, 2])
#返回顺序排序后的元素索引值
j = np.argsort(a)
print(j)
print('----------')
#进行顺序排序
print(a[j])
结果为:
[[4 3 5]
[1 2 1]]
----------
[[3 4 5]
[1 1 2]]
----------
[2 3 1 0]
----------
[1 2 3 5]
另附:
科学计算库Numpy-数据结构
科学计算库Numpy-数据操作
科学计算库Numpy-矩阵属性
科学计算库Numpy-矩阵操作