科学计算库Numpy-常用函数

来源:互联网 发布:网络洗剪吹是什么意思 编辑:程序博客网 时间:2024/06/05 03:25

假定所有操作都事先导入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 = aprint(a is b)b.shape = 3, 4print(a.shape)print(id(a))print(id(b))print('----------')#②浅复制,不同的ID,但共用一组数据c = a.view()print(c is a)c.shape = 2,6print(a.shape)c[0, 4] = 1234print(a)print(id(a))print(id(c))print('----------')#③深复制,两个变量完全独立,相互无影响d = a.copy()print(a is d)d[0, 0] = 999print(a)print(id(a))print(id(d))

结果为:

True(3, 4)19816597865761981659786576----------False(3, 4)[[   0    1    2    3] [1234    5    6    7] [   8    9   10   11]]19816597865761981659737904----------False[[   0    1    2    3] [1234    5    6    7] [   8    9   10   11]]19816597865761981659786336

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列,每个元素的值都为ab = 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-矩阵操作

原创粉丝点击