python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...
数组的连接:
1 # 连接数组 2 A = np.zeros((3, 4)) 3 B = np.ones_like(A) 4 print(A, "\n-------分割符--------\n", B) 5 print("np.vstack的效果:\n", np.vstack((A, B))) # 这是多维数组按列拼接,如果A的shape是(3,4,5),拼接之后为(6,4,5) 6 print("np.hstack的效果:\n", np.hstack((A, B))) # 这是多维数组按行拼接,如果A的shape是(3,4,5),拼接之后为(3,8,5) 7 a = np.array([1, 1.2, 1.3]) 8 b = np.array([2, 2.2, 2.3]) 9 c = np.array([3, 3.2, 3.3]) 10 print("np.column_stack的效果:\n", np.column_stack((A, B))) 11 print("np.row_stack的效果:\n", np.row_stack((A, B))) 12 print("np.column_stack的效果:\n", np.column_stack((a, b, c))) 13 print("np.row_stack的效果:\n", np.row_stack((a, b, c))) 14 Out[1]: 15 [[0. 0. 0. 0.] 16 [0. 0. 0. 0.] 17 [0. 0. 0. 0.]] 18 -------分割符-------- 19 [[1. 1. 1. 1.] 20 [1. 1. 1. 1.] 21 [1. 1. 1. 1.]] 22 np.vstack的效果: 23 [[0. 0. 0. 0.] 24 [0. 0. 0. 0.] 25 [0. 0. 0. 0.] 26 [1. 1. 1. 1.] 27 [1. 1. 1. 1.] 28 [1. 1. 1. 1.]] 29 np.hstack的效果: 30 [[0. 0. 0. 0. 1. 1. 1. 1.] 31 [0. 0. 0. 0. 1. 1. 1. 1.] 32 [0. 0. 0. 0. 1. 1. 1. 1.]] 33 np.column_stack的效果: 34 [[0. 0. 0. 0. 1. 1. 1. 1.] 35 [0. 0. 0. 0. 1. 1. 1. 1.] 36 [0. 0. 0. 0. 1. 1. 1. 1.]] 37 np.row_stack的效果: 38 [[0. 0. 0. 0.] 39 [0. 0. 0. 0.] 40 [0. 0. 0. 0.] 41 [1. 1. 1. 1.] 42 [1. 1. 1. 1.] 43 [1. 1. 1. 1.]] 44 np.column_stack的效果: 45 [[1. 2. 3. ] 46 [1.2 2.2 3.2] 47 [1.3 2.3 3.3]] 48 np.row_stack的效果: 49 [[1. 1.2 1.3] 50 [2. 2.2 2.3] 51 [3. 3.2 3.3]] |
拆分数组:
1 A = np.arange(0, 12).reshape(2, 6) 2 print("二维数组A:\n", A) 3 [B, C, D] = np.hsplit(A, 3) # hsplit(ary, indices_or_sections), np.hsplit(A, 3)为默认按列均分数组 4 print(B, "\n--------*---------\n", C, "\n") 5 [E, F] = np.vsplit(A, 2) # 默认按行均分数组 6 print(E, "\n--------*---------\n", F, "\n") 7 [A1, A2, A3] = np.split(A, [1, 3], axis=1) # axis=1按列切分,axis=0按行切分 8 print(A1, "\n--------*---------\n", A2, "\n") 9 Out[2]: 10 二维数组A: 11 [[ 0 1 2 3 4 5] 12 [ 6 7 8 9 10 11]] 13 [[0 1] 14 [6 7]] 15 --------*--------- 16 [[2 3] 17 [8 9]] 18 19 [[0 1 2 3 4 5]] 20 --------*--------- 21 [[ 6 7 8 9 10 11]] 22 23 [[0] 24 [6]] 25 --------*--------- 26 [[1 2] 27 [7 8]] |
数组的广播机制:
1 A = np.arange(0, 16).reshape(4, 4) 2 b = np.array([1.2, 2.3, 3, 4]) 3 print(A + b) 4 m = np.arange(6).reshape((3, 2, 1)) 5 n = np.arange(6).reshape((3, 1, 2)) 6 print("----*----\n", m, "\n----*----\n", n) 7 print("m + n 的广播:\n", m + n) 8 Out[3]: 9 [[ 1.2 3.3 5. 7. ] 10 [ 5.2 7.3 9. 11. ] 11 [ 9.2 11.3 13. 15. ] 12 [13.2 15.3 17. 19. ]] 13 ----*---- 14 [[[0] 15 [1]] 16 17 [[2] 18 [3]] 19 20 [[4] 21 [5]]] 22 ----*---- 23 [[[0 1]] 24 25 [[2 3]] 26 27 [[4 5]]] 28 m + n 的广播: 29 [[[ 0 1] 30 [ 1 2]] 31 32 [[ 4 5] 33 [ 5 6]] 34 35 [[ 8 9] 36 [ 9 10]]] |
示意图如下:
结构化数组:
1 structure_array = np.array([(1, 'First', 0.5, 1+2j), (2, 'Second', 1.3, 2-2j), (3, 'Third', 0.8, 1+3j)]) 2 print(structure_array) 3 structure_array_1 = np.array([(1, 'First', 0.5, 1+2j), (2, 'Second', 1.3, 2-2j), (3, 'Third', 0.8, 1+3j)], 4 dtype=[('id', '<i2'), ('position', 'S6'), ('value', 'f4'), ('complex', '<c8')]) 5 print(structure_array_1) 6 print(structure_array_1['id']) 7 print(structure_array_1['position']) 8 Out[4]: 9 [['1' 'First' '0.5' '(1+2j)'] 10 ['2' 'Second' '1.3' '(2-2j)'] 11 ['3' 'Third' '0.8' '(1+3j)']] 12 [(1, b'First', 0.5, 1.+2.j) (2, b'Second', 1.3, 2.-2.j) 13 (3, b'Third', 0.8, 1.+3.j)] 14 [1 2 3] 15 [b'First' b'Second' b'Third'] |
文件贮存与读写:
1 A = np.arange(12).reshape(3, 4) 2 np.save('save_data', A) 3 load_data = np.load('save_data.npy') 4 print("Numpy默认保存的格式:\n", load_data) 5 # 保存为csv格式 6 # savetxt(fname,X,fmt='%.18e',delimiter=' ',newline='\n',header='',footer='',comments='# ', encoding=None) 7 np.savetxt('data_csv.csv', A) 8 txt_csv = np.loadtxt('data_csv.csv') 9 print("Numpy导入csv的格式:\n", txt_csv) 10 # np.genfromtxt()导入数据 11 data = np.genfromtxt('data_csv.csv', delimiter=' ') 12 print("genfromtxt导入csv的格式:\n", data) 13 Out[5]: 14 Numpy默认保存的格式: 15 [[ 0 1 2 3] 16 [ 4 5 6 7] 17 [ 8 9 10 11]] 18 Numpy导入csv的格式: 19 [[ 0. 1. 2. 3.] 20 [ 4. 5. 6. 7.] 21 [ 8. 9. 10. 11.]] 22 genfromtxt导入csv的格式: 23 [[ 0. 1. 2. 3.] 24 [ 4. 5. 6. 7.] 25 [ 8. 9. 10. 11.]] |
np.where:
np.where实际上是 x if condition else y 的矢量化版本
1 x = np.array([2, 3, 4, 5, 6]) 2 y = np.array([10, 11, 12, 13, 14]) 3 condition = np.array([True, False, True, True, False]) 4 z = np.where(condition, x, y) 5 print(z) 6 data = np.array([[1, 2, np.nan, 4], [np.nan, 2, 3, 4]]) 7 print(np.isnan(data)) 8 print(np.where(np.isnan(data), 0, data)) 9 Out[6]: 10 [ 2 11 4 5 14] 11 [[False False True False] 12 [ True False False False]] 13 [[1. 2. 0. 4.] 14 [0. 2. 3. 4.]] |
数组去重:
1 print(np.unique([1, 1, 2, 3, 4, 4, 6])) 2 print(np.unique(np.array([[1, 1, 2, 3, 4, 4, 6], [1, 5, 9, 4, 7, 2, 1]]))) 3 test = np.unique([[1, 1, 2, 3, 4, 4, 6], [1, 5, 9, 4, 7, 2, 1]]) 4 print(test, type(test)) 5 Out[7]: 6 [1 2 3 4 6] 7 [1 2 3 4 5 6 7 9] 8 [1 2 3 4 5 6 7 9] <class 'numpy.ndarray'> |
转载于:https://www.cnblogs.com/dan-baishucaizi/p/9389338.html
python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...相关推荐
- python运算学习之Numpy ------ 数组的切片索引与循环遍历、条件和布尔数组、形状变化...
数组的切片索引: 数组的切片索引和列表非常类似,下面用代码简单说明 1 a = np.random.rand(16).reshape(4, 4) 2 print("数组a:\n", ...
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 - Socrates的专栏 - 博客频道 - CSDN.NET Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 ...
- python语言结构化语言_如何在python中处理结构化语言文件
我有一个像这样的大型结构化语言文件:TASK SchM_Task { TYPE = AUTO; SCHEDULE = NON; PRIORITY = 160; ACTIVATION = 1; TIMI ...
- python hstack_Python学习之Numpy速成记——基础篇(中)
上节课我们一起学习了Numpy的基本功能和它的部分基础知识.今天我们一起接着来学习剩下的部分. 5.一维数组的索引和切片 (1)一维数组的切片操作与Python列表的切片操作很相似.例如,我们可以用下 ...
- 【神经网络与深度学习】 Numpy 实现全连接神经网络
1.实验名称 Numpy 实现全连接神经网络实验指南 2.实验要求 用 python 的 numpy 模块实现全连接神经网络. 网络结构为一个输入层.一个隐藏层.一个输出层. 隐藏层的激活函数为 Re ...
- 向量连接世界,Zilliz 2022 非结构化数据峰会来袭
9 月 24 日,Zilliz 2022 首届非结构化数据峰会将正式与大家见面.届时,Zilliz 核心产品和研发团队将与大家分享非结构化数据处理应用与向量数据库领域最核心.最前沿的研究成果和产品创新 ...
- bool python 运算_python中的布尔操作
点击以下链接可以快速访问全部我发表的Python相关文章: Nick WU:Nick WU的python文章目录(持续更新中...)zhuanlan.zhihu.com 1. Python中的布尔值 ...
- python库整理:numpy 集合操作
1 并集--union1d import numpy as np arr1 = np.array([1, 2, 3, 4]) arr2 = np.array([3, 4, 5, 6])newarr = ...
- python基础学习七:字符串操作
一.认识字符串 字符串是 Python 中最常⽤的数据类型.我们⼀般使⽤引号来创建字符串.创建字符串很简单,只要为变量分配⼀个值即可. a = 'hello world' b = "abcd ...
最新文章
- php事件和行为,Yii框架组件和事件行为管理详解
- 一文带你学C语言,详细知识点思维导图!
- dbeaver无法修改表数据_隐藏彩蛋:你知道python有一个内置的数据库吗?
- 《转》Java字符串驻留池
- jquery validate验证remote时的多状态问题
- Linux 命令(73)—— ps 命令
- python 数据交互_Python 进程间数据交互
- 基于qt制作的音乐播放器,2.0版
- JVM - 【字符串常量池】-XX:StringTableSize
- 8.21: Hackday、慈善x快速迭代
- 计算机管理格式化硬盘,磁盘管理格式化硬盘出错的解决方法
- 三种LCA算法(一):Doubly算法(倍增算法)
- 期货业-期货市场的产生
- 一级计算机页码居中,word中页码为何不能同时居中
- 计算机学院校运会解说词,大学学院运动会入场解说词
- 微信小程序:智力考验看成语猜古诗句好玩解闷小游戏下载
- 字节跳动 C++面经总结第四期
- uva 11021 数学概率 麻球
- 苹果最新专利:虚拟SIM卡
- Grub 引导 WIM / ISO
热门文章
- Linux知识框架梳理
- 单例对象会被jvm的gc时回收吗_【PHP设计模式】单例模式
- php分页基于oracle,PHP实现的oracle分页函数实例
- *第6章 判别分析及R使用
- 美国纽约法院定于明年3月对BitMEX前高管进行审判
- 多链NFT市场Polkarare获加密投资机构DFG战略投资
- 基于Tezos构建的DEX Dexter被曝合约存在漏洞,开发团队Nomadic Labs已重写合约
- Filecoin Gas基础费率跌至4.40 nanoFIL
- 腾讯公开“区块链网络的信息处理方法”相关专利
- Uphold:在最终被判定为证券前不会退市XRP