专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

numpy的应用场景和常用方法_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 13:42:50       共计:3600 浏览

numpy的应用场景和常用方法?

1. np.array 可将序列对象(如列表和元包)转换为数组,可以生成一维或多维数组,生成多维数组时要对齐。

a = [[1,2,3],[4,5,6]]b = np.array(a)

2. 数组与列表的相互转换

a = np.ones((2,2))b = a.tolist() # 数组转列表c = [[1,2,3],[4,5,6]]d = np.array(c) # 列表转数组e = [1,2,3],[4,5,6]g = np.array(e) #元组转数组

3. 低精度和高精度一起,会转换为高精度的

a = np.array((1,2.1,3,4,5,6))b = a.reshape(2,3)print(a.shape, a.dtype)

4. np.arange(n) 生成一维从0到n-1的向量,可以设定范围和步长,如np.arange(1,10,2)。Python 内置的range生成从0到n-1的列表,一般只用于for循环中。

a = np.arange(15)for i in range(15): print(i)

5. np.ones .zeros .empty 里面需要传 入一个元组或列表,来指定创建什么形状,同时可以指定数据类型dtype。

a = np.ones((2,2), dtype = int)b = np.zeros(10)

6. np.astype 实现数据类型转换,string类型的数字(如'123')也可以转换为int。

a = np.array((1,2,3,4))print(a.dtype)b = a.astype(np.float64)print(b.dtype)

7. 大小相等的数组之间的任何运算都会元素级的,特别注意数组之间的乘法是元素级的,要实现矩阵乘法,需要用np.dot。

8. 数组的切片是原始数组的视图,数据在赋值时不会复制,想要复制数据,需要在切片后加.copy()

9. 数组切片用方括号[ ],切片的形式为[start:end:step], 在切片时起点和终点至少要指定一个。不指定的部分,表示一直到索引最开始或者最后。-1 可以表示最后一个元素,:表示复制原列表。索引有几种形式,如[1,2], [:,3],[:2,3:] 注意索引的结尾数要减1,开头不需要。还有花式索引,a[[1,2,3]] 取对应的行,a[:,[1,2,3]]取对应的列,花式索引会复制数据,注意a[[1,2,3],[1,2,3]] 取的是3个对应位置的数字。进行反向索引时,要在数字前全部加负号,如[-2: -10:-1] 表示取向量的倒数第2个到倒数第10个,步长为2; [-1::-1] 表示从最后一个按照步长为1一直取到第1个。

a = np.arange(30).reshape(6,5)b = a[:2,3:]c = a[[1,5,2]]d = a[:,[3,4,1]]

a = b[b[:,0] == c, :] ## 取出某列中所有满足特定值的所有行,此式子为取出b中第0行里所有值等于c的所有行

a = b[~b[:,0] == c, :] ## 反转,取出所有不满足该条件的

10. 数组之间的拼接有两种方法,hstack,vstack分别对应行拼接和列拼接;concatenate里axis=0对应列轴,=1对应横轴。hsplit, vsplit以及split(与concatenate对应)实现矩阵的指定份数的均等分。

a = np.ones((1,2))b = np.zeros((3,2))c =np.ones((3,3))d = np.hstack((b,c))e = np.concatenate((b,c),axis = 1)f = np.vstack((a,b))g, h, i = np.hsplit(c, 3)

11. 数组中最小最大元素的索引:np.argmin,np.argmax;数组中最小最大的元素:np.max,np.min。

a = np.arange(30).reshape(6,5)b = np.argmax(a)

12. Python内置zip函数,可以将多个可迭代对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,当所有对象长度不一致时,以短的为主。

a = np.array((1,2,3))b = np.array((4,5,6))c = zip(a,b)for i, j in zip(a,b):print(i,j)

13. numpy.where(conditon[, x, y]) 条件逻辑表达式,方括号内可省去,如果条件为true,则其值取x,否则取y。 如果只有条件,则范围条件中非0元素的索引。其等效为 value = x if c else y for c, x, y in zip(condition, xarr, yarr)。

xarr = np.array([1.1, 1.2, 1.3, 1.4])yarr = np.array([2.1, 2.2,2.3, 2.4])condi = np.array([True, False, True, False])value = np.where(condi, xarr, yarr)

14. 基础数学和统计方法中,sum,mean, std, var(方差), min, max, argmin, argmax (arg系列返回最值的索引), cumsum等可以分别针对数组整体,以及axis = 0 (y轴,向), = 1 (x轴, 横向)进行数据统计。

a = np.random.randn(5,5) # 正态分布随机数b = np.argmin(a)c = np.argmin(a, axis = 0)d = a.argmin(axis = 1)

15. 对布尔型数组的方法, Python里0与False, 非0元素与True对应,针对布尔型数组的方法有,sum统计true的个数,实质对0与1的求和,any判断是否有true, all判断是否全为true。

a = np.array([False, True, False, False])print(a.sum())print(a.any())print(a.all())

16. sort对指定轴进行从小到大的排序, argsort 是间接排序、返回数值从小到大的索引

a = np.random.randn(5,3)b = np.sort(a) # 默认axis=0b2 = np.sort(a, axis = 0) b3 = np.sort(a, axis = 1)

17. 唯一化和集合逻辑: unique返回矩阵中唯一值的序列(即所有出现过元素的序列),python内置的set只能针对向量,返回向量中的唯一值序列,该序列只能作为迭代序列,一般用于for循环等迭代中。intersect1d(x,y) x与y的交集, union1d(x,y) x与yd的并集, in1d(x,y) x中的元素是否在y集合中, setdiff1d(x,y) 集合差 setxor1d(x,y)异或。

a = np.array(('Bob','Alice','Joe','Will','Bob','Joe'))b = np.unique(a)a2 = np.array((1,2,3,4,2,3,1,5,3,2,6,5,7,6,4))b2 = np.unique(a2)a3 = np.array([[1,2,3],[2,3,4],[1,2,4]])b3 = np.unique(a3)for item in set(a2):print (item)

18. 线性代数操作, 主要方法有dot(点乘), diag(返回方阵对角元素), trace(返回方阵的迹), det(行列式), eig(f方阵特征值和特征向量), inv(方阵的逆), pinv(广义逆), qr(QR分解), svd(奇异值分解), slove(解方程AX=B)。

19. 在Anconda中,针对向量和数组的处理是不同的,向量不分行向量和列向量,形式为size a(3, ) 是长度为3的向量;数组为size a(3,1)。在编程时,要注意区分,最好把向量转为数组。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:mysql 时间查询数据,MySQL语句中怎样获取当前系统日期_数据库 | ·下一条:查询mysql存储过程,mysql保存1970年以前的数据报错_数据库

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有