python学习——numpy基础操作
numpy 基础操作
- 1 创建数组
- 2 数组常用属性和函数
- 3 数组元素增删
- 4 元素查找
- 5 数学运算
- 6 数组切片
1 创建数组
import numpy as np #以后numpy简写为np
print(np.array([1,2,3])) #>>[1 2 3]
print(np.arange(1,9,2)) #>>[1 3 5 7]
print(np.linspace(1,10,4)) #>>[ 1. 4. 7. 10.]
print(np.random.randint(10,20,[2,3]))#2行3列
#>>[[12 19 12]
#>> [19 13 10]]
print(np.random.randint(10,20,5)) #>>[12 19 19 10 13]
a = np.zeros(3)
print(a) #>>[ 0. 0. 0.]
print(list(a)) #>>[0.0, 0.0, 0.0]
a = np.zeros((2,3),dtype=int) #创建一个2行3列的元素都是整数0的数组
2 数组常用属性和函数
import numpy as np
b = np.array([i for i in range(12)])
#b是[ 0 1 2 3 4 5 6 7 8 9 10 11]
a = b.reshape((3,4)) #转换成3行4列的数组,b不变
print(len(a)) #>>3 a有3行
print(a.size) #>>12 a的元素个数是12
print(a.ndim) #>>2 a是2维的
print(a.shape) #>>(3, 4) a是3行4列
print(a.dtype) #>>int32 a的元素类型是32位的整数
L = a.tolist() #转换成列表,a不变
print(L)
#>>[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
b = a.flatten() #转换成一维数组
print(b) #>>[ 0 1 2 3 4 5 6 7 8 9 10 11]
3 数组元素增删
numpy数组一旦生成,元素就不能增删。上面函数返回一个新的数组。
import numpy as np
a = np.array((1,2,3)) #a是[1 2 3]
b = np.append(a,10) #a不会发生变化
print(b) #>>[ 1 2 3 10]
print(np.append(a,[10,20])) #>>[ 1 2 3 10 20]
c = np.zeros((2,3),dtype=int) #c是2行3列的全0数组
print(np.append(a,c)) #>>[1 2 3 0 0 0 0 0 0]
print(np.concatenate((a,[10,20],a)))
#>>[ 1 2 3 10 20 1 2 3]
In [10]: print(np.concatenate((c,np.array([[10,20,30]]))))...:
[[ 0 0 0][ 0 0 0][10 20 30]]In [12]: np.concatenate((c,np.array([[1,2],[10,20]])),axis=1)
Out[12]:
array([[ 0, 0, 0, 1, 2],[ 0, 0, 0, 10, 20]])
#axis=0可以看做直接把b矩阵接在a的下面,即按行进行合并),axis=1可以看做将矩阵连接在a的右边,即按列进行合并
import numpy as np
a = np.array((1,2,3,4))
b = np.delete(a,1) #删除a中下标为1的元素,a不会改变
print(b) #>>[1 3 4]
b = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(np.delete(b,1,axis=0)) #删除b的第1行得新数组
#>>[[ 1 2 3 4]
#>> [ 9 10 11 12]]
print(np.delete(b,1,axis=1)) #删除b的第1列得新数组
print(np.delete(b,[1,2],axis=0)) #删除b的第1行和第2行得新数组
print(np.delete(b,[1,3],axis=1)) #删除b的第1列和第3列得新数组
4 元素查找
import numpy as np
a = np.array((1,2,3,5,3,4))
pos = np.argwhere(a==3) #pos是[[2] [4]]
a = np.array([[1,2,3],[4,5,2]])
print(2 in a) #>>True
pos = np.argwhere(a==2) #pos是[[0 1] [1 2]]
b = a[a>2] #抽取a中大于2的元素形成一个一维数组
print(b) #>>[3 4 5]
a[a > 2] = -1 #a变成[[ 1 2 -1] [-1 -1 2]]
5 数学运算
import numpy as np
a = np.array((1,2,3,4))
b = a + 1
print(b) #>>[2 3 4 5]
print(a*b) #>>[ 2 6 12 20] a,b对应元素相乘
print(a+b) #>>[3 5 7 9] a,b对应元素相加
c = np.sqrt(a*10) #a*10是[10 20 30 40]
print(c) #>>[ 3.16227766 4.47213595 5.47722558 6.32455532
6 数组切片
numpy数组的切片是“视图”,是原数组的一部分,而非一部分的拷贝
切片是左闭右开[,)
import numpy as np
a = np.arange(8) #a是[0 1 2 3 4 5 6 7]
b = a[3:6] #注意,b是a的一部分
print(b) #>>[3 4 5]
c = np.copy(a[3:6]) #c是a的一部分的拷贝
b[0] = 100 #会修改a
print(a) #>>[ 0 1 2 100 4 5 6 7]
print(c) #>>[3 4 5] c不受b影响
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
b = a[1:3,1:4] #b是>>[[ 6 7 8] [10 11 12]]
python学习——numpy基础操作相关推荐
- python之numpy基础_Python知识普及:Numpy基础操作
原标题:Python知识普及:Numpy基础操作 Numpy基础数据结构 创建数组 Numpy通用函数 import numpy as np # reshape 改变数组维度形状 ar1 = np.a ...
- Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级
前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...
- python基础语法及知识总结-Python 学习完基础语法知识后,如何进一步提高?
---4.30更新---感谢大家支持,点赞都破两千了.给大家整理出来新的资料,需要的小伙伴来自取: Python练手项目视频如下: Python自学基础知识如下: 以下为原文内容: Python 学习 ...
- NumPy基础操作(1)
NumPy基础操作(1) (注:记得在文件开头导入import numpy as np) 目录: 数组的创建 强制类型转换与切片 布尔型索引 结语 数组的创建 相关函数 np.array(), np. ...
- python中numpy矩阵运算操作大全(非常全)!
python中numpy矩阵运算操作大全(非常全) //2019.07.10晚 python矩阵运算大全 1.矩阵的输出形式: 对于任何一个矩阵,python输出的模板是: import numpy ...
- python学习三-基础语法
python学习三-基础语法(2019-12-24日晚) 1.源码文件 Python源码文件名通常采用小写的方式,常见的扩展名有: py:基本的源码扩展名. pyw:是另一种源码扩展名,跟py唯一的区 ...
- Python 学习 —— Numpy 、Pandas 傻傻分不清楚
之前的文章里面谈到过,我从R转到Python上,一个很大的不习惯就是R的数据结构比较简单,但是Python的数据类型比较多,很容易就令人头脑混乱.但是今天学习了一下Udacity的课程,顿时就清楚多了 ...
- 【Python】Numpy基础:数组和矢量运算
Numpy基础:数组和矢量运算 目录: 文章目录 一 Numpy及其重要性 二 ndarray:一种多维数组对象 1 创建ndarray 2 ndarray的数据类型 3 数组和标量之间的运算 4 基 ...
- Python学习入门7:python学习从基础到高手,再到就业
其实入门Python并不难,难的是选定自己的学习方向. 简单说下Python可以做什么: 后台开发(Django / Flask / Tornado) 科学计算(Numpy / Scipy / Mat ...
最新文章
- 成功的产品 = 做得好 + 卖得好
- 学习CSS了解单位em和px的区别
- (转)CXF学习笔记一:如何创建、发布和访问基于CXF的服务
- java 方法 示例_Java集合syncedSet()方法与示例
- 阿里云大数据利器Maxcompute-使用mapjoin优化查询
- 原创 | 开源AI测试专题、Jmeter测试专题
- 堆之二项堆(Binominal Heap)
- 大数据技术在发展 挑战与机遇并存
- 跟燕十八学习PHP-第二十五天-mysqlgroup by和having的综合练习
- 消费者性别及其所偏好牛奶品牌频数分布
- python可视化拖拽编程平台_PythonEditor可视化拼插编辑器:编程不用写代码,拖拖拽拽就可以!...
- 为VSCode 设置好看的字体:Operator Mono
- 计算机如何更新目录,wps更新目录【设置办法】
- 空城计课件软件测试,空城计课件参考
- 理论结合实际:如何调试神经网络并检查梯度
- 用鸽 计算机教案,幼儿园音乐教案《鸽子》
- Cookie的安全性
- 国产音频压缩格式JLM——JLM音频播放
- 【运筹学】对偶理论 : 对偶性质 ( 对称性质 | 对称性质推导 )
- 汽车理论matlab编程,汽车理论课后作业matlab编程详解(带注释)
热门文章
- 手机与服务器协议失败,无法连接到服务器。 协议: POP3, 端口: 110, 安全(SSL): 否, 套接字错误: 10060, 错误号: 0x800CCC0E...
- 大整数加法【信息学奥赛一本通-1168】
- 景德镇三中2021高考成绩查询,2021年景德镇高考状元名单公布,景德镇高考状元学校资料及最高分...
- Mipony Pro(网盘下载工具)专业版
- PO、DO、TO、DTO
- java实现人员排日程
- java异常处理怎么加_带你了解Java中的异常处理(上)
- oneos组件系列01:i2c_tools
- Vue.js设计与实现
- java中乱码产生的原因_java出现乱码的原因与解决方法详解