简单记录numpy库的某些基本功能
这里介绍python的一个库,numpy库,这个库是机器学习,数据分析最经常用到的库之一,也是利用python做数据必须用到的一个库,入门机器学习学的第一个python库就是它了。
先对其导入到python中,相关代码如下:
import numpy
1.首先利用这个库创建一个一维数组:
a=np.arange(10)
print(a)
输出结果如下:
[0 1 2 3 4 5 6 7 8 9]
2.创建一个布尔型的数组:
a=np.full((3,3),True,dtype=bool)
print(a)
结果如下:
[[ True True True] [ True True True] [ True True True]]
3.从一维数组从提取满足条件的元素,比方说提取出奇数的元素:
import numpy as np
a=np.arange(10)
print(a[a%2==1])
结果如下:
[1 3 5 7 9]
4.将数组中的所有奇数替换成-1而不影响原始的数组:
import numpy as np
a=np.arange(10)
print(a[a%2==1])
out=np.where(a%2==1,-1,a)
print(out)
print(a)
结果如下:
[1 3 5 7 9] [ 0 -1 2 -1 4 -1 6 -1 8 -1] [0 1 2 3 4 5 6 7 8 9]
5.将一行的数组转化为两行的数组:
import numpy as np
a=np.arange(10)
print(a)
b=a.reshape(2,-1)
print(b)
结果如下:
[0 1 2 3 4 5 6 7 8 9] [[0 1 2 3 4] [5 6 7 8 9]]
6.组合两个不同的数组,垂直堆叠数组:
import numpy as np
a=np.arange(10).reshape(2,-1)
print(a)
b=np.ones(10).reshape(2,-1)
print(b)
c=np.concatenate((a,b),axis=0)
print(c)
结果如下:
[[0 1 2 3 4] [5 6 7 8 9]] [[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]] [[0. 1. 2. 3. 4.] [5. 6. 7. 8. 9.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]]
7.采用另外的一种方法水平堆叠两个不同的数组:
import numpy as np a=np.arange(10).reshape(2,-1) print(a) b=np.ones(10).reshape(2,-1) print(b) c=np.hstack((a,b)) print(c)
#垂直堆叠的话将hstack改为vstack
结果如下:
[[0 1 2 3 4] [5 6 7 8 9]] [[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]] [[0. 1. 2. 3. 4. 1. 1. 1. 1. 1.] [5. 6. 7. 8. 9. 1. 1. 1. 1. 1.]]
8.如何获得两个数组之间的共同元素:
import numpy as np
a=np.array([0,1,2,3,4,5,6,7,8,9]).reshape(2,-1)
b=np.array([7,2,3,8,6,5,4,0,8,8]).reshape(2,-1)
c=np.intersect1d(a,b)
print(c)
结果:
[0 2 3 4 5 6 7 8]
9.如何交换二维数组中的两个列,比方说第一和第二列:
import numpy as np
a=np.array([0,1,2,3,4,5,6,7,8]).reshape(-1,3)
print(a)
b=a[:,[1,0,2]]
print(b)
结果:
[[0 1 2] [3 4 5] [6 7 8]] [[1 0 2] [4 3 5] [7 6 8]]
10.创建一个随机数组:
import numpy as np
a=np.random.random(9).reshape(3,3)
print(a)
结果:
[[0.35743078 0.45562558 0.47565199] [0.21876288 0.7162558 0.88601442] [0.87192744 0.2853304 0.48398916]]
11.打印数组并且保留3位小数:
import numpy as np
a=np.random.random(9).reshape(3,3)
print(a)
np.set_printoptions(precision=3)
print(a)
结果:
[[0.61684015 0.01555676 0.59569796] [0.74603776 0.04927135 0.98439895] [0.38879249 0.71765352 0.24739962]] [[0.617 0.016 0.596] [0.746 0.049 0.984] [0.389 0.718 0.247]]
12.求数组的平均值,中位数和标准差:
import numpy as np
a=np.random.random(9).reshape(3,3)
print(a)
mean,mid,std=np.mean(a),np.median(a),np.std(a)
print(mean,mid,std)
结果:
[[0.69353914 0.41381197 0.08503532] [0.59348658 0.72611527 0.93285931] [0.11307856 0.01634739 0.71822684]] 0.476944488122813 /t 0.593486582461256 0.3146044225752866
这里顺便提一下其他的函数,比方绝对值函数abs,平方函数square,四舍五入函数rint,方差var,求和平均值就不说了。。
13.多维数组的切片:
import numpy as np
a=np.arange(24).reshape((2,3,4))
print(a)
print()
#选取一个维度的
b=a[:,1,-3]
print(b)
print()
c=a[:,1:3,:]
print(c)
print()
#利用步长跳跃切片
d=a[:,:,::2]
print(d)
结果如下:
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] [ 5 17] [[[ 4 5 6 7] [ 8 9 10 11]] [[16 17 18 19] [20 21 22 23]]] [[[ 0 2] [ 4 6] [ 8 10]] [[12 14] [16 18] [20 22]]]
暂时第一篇博客就写到这,因为自己是菜鸡中的菜鸡,所以如果以上的代码或者结果有错误的话,也很正常,欢迎指正指导!