python的numpy库基本函数复习

Python使用中,对numpy使用的挺多的,最近我决定系统的学习一下numpy的基本函数,复习的内容如下。 


import numpy as np

#%% lambda  filter and reduce use method
a=lambda x:x*x
print(a(10))
#filter 接受一个列表参数和一个lambda函数参数
#这个函数f的作用是对每个元素进行判断,返回True或False filter()根据判断结果自动过滤掉不符合条件的元素
# 返回由符合条件元素组成的新list
a_list=[1,2,3,4]
a=lambda x:x%2==1
b=filter(a,a_list)#filter
for i in b:
    print(i)
#或者直接b=list(filter(a,a_list))
#map( )函数是另一个以一个函数对象和一个列表作为参数的内置函数 传入map()函数的迭代器可以是字典,列表等
# 提供了两个列表,对相同位置的列表数据进行相加
c=list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
print("c::",c)


#%%  数组属性
a=np.arange(10).reshape(5,2)
print("a dim is :",a.ndim)#维度
print("a shape is :",a.shape)#输出(n,m)
print("a itemsize is :",a.itemsize)#输出每一个元素的大小
print("a dtype is :",a.dtype.name,a.dtype,type(a.dtype))#输出元素的类型
#print(a)
#%% 创建数组的方式
a = np.array([2,3,4])
b = np.array([1.2, 3.5, 5.1])
c = np.array( [ [1,2], [3,4] ], dtype=complex )#数组中元素类型直接定义
d=np.zeros((3, 4))#全为0的元素
d2=np.zeros_like(d)#维度和d一样的全是0的数组
e=np.ones((3,4))#全为1的元素
e2=np.ones_like(d)#全为1的元素
f=np.empty( (2,3) )  #初始元素是随机的,取决于内存

f2=np.empty_like(e)  #初始元素是随机的,取决于内存
f3=np.full((2,2),13)
f4=np.full_like(f,13)
print("d is :",d)
print("d2 is :",d2)
print("e is :",e)
print("f4 is :",f4)

g=np.arange( 10, 30, 5 )#数组间隔生成  返回是一个数组
#print("g is :",g)
h=np.linspace( 0, 2, 9 )#0-2中分为9个 包含0 和 9
#print("h is :",h)
i=np.linspace( 0, 2*np.pi, 100 )
#print("i is :",i)
#fromfunction 通过在每个坐标上执行一个函数来构造一个数组。 因此,所得数组的坐标值为。fn(x, y, z)(x, y, z)
jj = np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int)
print("jj is :",jj)
jj2 = np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int)
print("jj2 is :",jj2)


#%% random use method
rg = np.random.default_rng(1)
a = rg.random((2,3))
print("a is :",a)

#%% unary operations
print("a sum is :",a.sum(),a.sum(axis=0))
print("a min is :",a.min(),a.min(axis=0))
print("a max is :",a.max(),a.max(axis=0))

b = np.arange(3)
c = np.array([2., -1., 4.])
print("add is :",b+c,np.add(b,c))
a=np.array([1,2,3,4,5])
d = a[ : :2]
s=slice(0,4,1)
print("a is :",a,"d is :",d,a[s])
a[::3] = 1000
print("a is :",a[1])

#np.where  ? :
data = np.random.random((5,2))
a= np.where(data > 0.5, data, 0)
print(data,a)
#raval  将多维数组转换成1维数组
print(a,a.T ,a.ravel())
#vstack 竖直方向拼接在一起 hstack 水平方向拼接
a=np.random.random((2,2))
b=np.random.random((2,2))
print(a,b,np.vstack((a,b)))
print(a,b,np.hstack((a,b)))

#数组拆分  hsplit 竖直方向拆分
a = np.floor(10*rg.random((2,12)))
b=np.hsplit(a,3)
print("a,b :",a,b)
c = np.hsplit(a,(3,4))
print("a c:",a,c)

#复制数组
#浅复制
a=np.array([1,2,3,4,5])
b=a#这种拷贝只是多了一个名字
print("a=",a,"b=",b,a is b)
a[2]=1
print("a=",a,"b=",b,a is b)

c=a.view()#创建一个查看相同数据的新数组对象
print("a=",a,"c=",c,a is c)
a[2]=5
print("a=",a,"c=",c,a is c)
#深度复制
d=a.copy()
print("a=",a,"d=",d,a is d)
a[2]=3
print("a=",a,"d=",d,a is d)


#高级索引
a = np.arange(12)
i = np.array([1, 1, 3, 8, 5])
j = np.array([[3, 4], [9, 7]])
print(a,"a[i] :",a[i],"a[j] :",a[j])
a = np.arange(12) .reshape(3,4)
print(a)
b=np.argmax(a,axis=0)
time = np.linspace(20, 145, 5)
print(np.argmax(a),b,np.argmax(a,axis=1),time[b])#最大数的索引值

a = np.arange(12).reshape(3,4)
b = a > 4
print("b is :",b,"a[b] is :",a[b])#a[b]是满足a[i]>4的索引值
a[b] = 0
print("a is :",a)#将满足b条件的元素全部清零

#利用布尔来切片
a = np.arange(12).reshape(3,4)
b1 = np.array([False,True,True])
b2 = np.array([False,True,True,False])
print("a is :",a)
print("a[b1,:]",a[b1,:])#相当于把 第二第三行取出来
print("a[:,b2]",a[:,b2])#相当于把 列取出来
print("a[b1,b2]",a[b1,b2])#

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页