此文为学习 理解Numpy,NumPy简单入门教程整理的学习笔记
NumPy是一个功能强大的Python库,主要用于对多维数组执行计算。
NumPy这个词来源于两个单词-- Numerical和Python。
一、numpy数组创建
- 通过np.array()函数填入list,tuple等,多维数组可填入list的list,tuple的tuple
a = np.array([0, 1, 2, 3, 4])
a=np.array([[0,1,2,3,4],[1,2,3,4,5]])
b = np.array((0, 1, 2, 3, 4))
b=np.array(((0,1,2,3,4),(1,2,3,4,5)))
- 通过numpy自带函数创建,如np.arrange(),np.zreos(),np.ones(),np.random.random()
c = np.arange(5) #[0 1 2 3 4]
d = np.linspace(0, 2*np.pi, 5)#[ 0. 1.57079633 3.14159265 4.71238898 6.28318531]
e=np.zeros(5)
e=np.zeros(5,6)
f=np.ones(5)
f=np.ones(5,6)
a = np.arange(25)
a = a.reshape((5, 5))
二、numpy数组访问
- 通过索引访问单个数组元素
a=np.array([[0,1,2,3,4],[1,2,3,4,5]])
a[1][1]和a[1,1]效果是一样的,都是得到2
- 通过切片操作访问多个元素
a=np.array([[0,1,2,3,4],[1,2,3,4,5]])
a[0,1:4]和a[0][1:4]效果一样,都是得到[2 3 4]
三、numpy数组运算
除了 dot() 之外,这些操作符都是对数组进行逐元素运算
dot() 函数才是计算矩阵乘法
a = np.array([[1.0, 2.0], [3.0, 4.0]])
b = np.array([[5.0, 6.0], [7.0, 8.0]])
print(a + b)
[[ 6. 8.]
[10. 12.]]
print(a - b)
[[-4. -4.]
[-4. -4.]]
print(a * b)
[[ 5. 12.]
[21. 32.]]
print(a / b)
[[0.2 0.33333333]
[0.42857143 0.5 ]]
print(a ** 2)
[[ 1. 4.]
[ 9. 16.]]
print(a < b)
[[ True True]
[ True True]]
print(a > b)
[[False False]
[False False]]
print(a.dot(b))
[[19. 22.]
[43. 50.]]
四、 numpy数组条件筛选
ps:类似于list的列表生成式
- 给定索引数组来筛选
a = np.arange(0, 100, 10)
indices = [1, 5, -1]#此处的list数组换成numpy数组也是一样的
b = a[indices]
print(a) # >>>[ 0 10 20 30 40 50 60 70 80 90]
print(b) # >>>[10 50 90]
- 根据指定的条件检索数组中的元素
a = np.arange(0, 100, 10)
mask = a<50
print(mask)#>>>[ True True True True True False False False False False]
print(type(mask))#<class 'numpy.ndarray'>
print(a[mask])#>>>[ 0 10 20 30 40]
- where()函数
a = np.arange(0, 100, 10)
b=np.where(a<50)
print(b)#(array([0, 1, 2, 3, 4], dtype=int64),)
print(type(b))#<class 'tuple'>
print(b[0])#[0 1 2 3 4]
print(type(b[0]))#<class 'numpy.ndarray'>
print(a[b[0]])#[ 0 10 20 30 40]
#根据条件赋值
b = np.where(a<50,a,100)#若小于50保持原值,否则,赋值为100
print(b)#[ 0 10 20 30 40 100 100 100 100 100]
五、numpy数组中值的替换
根据条件筛选出待替换元素,并赋值
a=np.array([1,2,3,4,5,6,7,8,9])
print(a)#[1 2 3 4 5 6 7 8 9]
a[a>5]=111
print(a)#[ 1 2 3 4 5 111 111 111 111]