python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算
利用Python进行数据分析——Numpy基础:数组和矢量计算
ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组
对整组数据进行快速运算的标准数学函数,无需for—loop
用于读写磁盘数据的工具以及用于操作内存映射文件的工具?
线性代数、随机数生成以及傅里叶变换功能
用于集成C/C++等代码的工具
一、ndarry:一种多维数组对象
1、创建ndarry
#一维
In [5]: data = [1,2,3]
In [6]: import numpy as np
In [7]: arr1 = np.array(data)
In [8]: arr1
Out[8]: array([1, 2, 3])
#二维
In [11]: data2 = [[1,2,3],[4,5,6]]
In [12]: arr2 = np.array(data2)
In [13]: arr2
Out[13]:
array([[1, 2, 3],
[4, 5, 6]])
#查看数组的信息
In [15]: arr2.shape
Out[15]: (2, 3)
In [16]: arr2.dtype
Out[16]: dtype('int32')
数组创建函数
array()
arange(),类似Python内置函数range(),但是range()返回的是列表
ones,zeros 创建一个全为1/0的数组,但是传进去的参数要是一个集合,例如np.ones((2,3))
ones_like,zeros_like 创建一个跟传进去数组形状一样的全1/0数组
empty,empty_like 创建空的数组,分配内存,不存值
eye,identity 创建方阵
2.数组和标量之间的运算
In [36]: arr2
Out[36]:
array([[1, 2, 3],
[4, 5, 6]])
In [37]: arr3
Out[37]:
array([[11, 12, 13],
[14, 15, 16]])
#加
In [38]: arr2+arr3
Out[38]:
array([[12, 14, 16],
[18, 20, 22]])
#乘
In [39]: arr2*arr3
Out[39]:
array([[11, 24, 39],
[56, 75, 96]])
#减
In [40]: arr3-arr2
Out[40]:
array([[10, 10, 10],
[10, 10, 10]])
#除
In [41]: arr3/arr2
Out[41]:
array([[11. , 6. , 4.33333333],
[ 3.5 , 3. , 2.66666667]])
#平方
In [42]: arr2**2
Out[42]:
array([[ 1, 4, 9],
[16, 25, 36]], dtype=int32)
3.索引和切片
索引:
arr2d[0,0]或者是arr2d[0][0]
arr3d[0,0,0]或者是arr3d[0][0][0]
切片:有:标记
arr2d[:2,:2]
arr3d[:2,:2]
先区分数组和列表的操作
数组的切片是在原始数组上进行的,而列表的切片操作则是进行了数据的赋值
如果需要切片的是一份副本而不是源数组本身,需要arr[5:8].copy()
#列表的切片
>>> l1 = list(range(10))
>>> l1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l2 = l1[5:8]
>>> l2
[5, 6, 7]
>>> l2[0]=15
>>> l2
[15, 6, 7]
>>> l1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#数组的切片
In [50]: arr = np.arange(10)
In [51]: arr
Out[51]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [52]: arr_slice = arr[5:8]
In [53]: arr_slice
Out[53]: array([5, 6, 7])
In [54]: arr_slice[0]=15
In [55]: arr_slice
Out[55]: array([15, 6, 7])
In [56]: arr
Out[56]: array([ 0, 1, 2, 3, 4, 15, 6, 7, 8, 9])
#二维数组的切片
In [95]: arr2d
Out[95]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
In [96]: arr2d[:2]
Out[96]:
array([[1, 2, 3],
[4, 5, 6]])
一次可以传入多个切片
In [97]: arr2d[:2,:1]
Out[97]:
array([[1],
[4]])
In [98]: arr2d[:2,:2]
Out[98]:
array([[1, 2],
#3维
In [83]: arr3d
Out[83]: [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
In [84]: arr3d[1]
Out[84]: [[7, 8, 9], [10, 11, 12]]
In [85]: arr3d[1][1]
Out[85]: [10, 11, 12]
In [86]: arr3d[1][1][1]
Out[86]: 11
In [87]: arr3d[1][1][2]
Out[87]: 12
布尔型索引
#[True,False,True]就相当有是取第0/2行
In [121]: arr2d[[True,False,True]]
Out[121]:
array([[1, 2, 3],
[7, 8, 9]])
In [122]: arr2d[[True,False,True],2]
Out[122]: array([3, 9])
花式索引
#与上边的博布尔型索引一样,也是取第0/2行
In [132]: arr2d[[0,2]]
Out[132]:
array([[1, 2, 3],
[7, 8, 9]])
#花式索引注意以下问题
花式索引跟切片不同,总是将数据复制到新数组中,所以造成以下现象
In [136]: arr2d[[0,2],[0,2]]
Out[136]: array([1, 9])
In [137]: arr2d[[0,2]][:,[0,2]]
Out[137]:
array([[1, 3],
[7, 9]])
数组转置和轴对换
转置是重塑的一种特殊形式,它返回的是源数据的视图,不会进行复制操作。
In [142]: arr2d.T
Out[142]:
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
4.对数组的元素进行操作的函数
对单个数组元素的操作函数
abs 计算绝对值
sqrt 计算各元素的平方根
square 计算各元素的平方
exp 计算各元素的以e为底的指数
log/log10/log2/log1p log1p是log(1+x)
sign 计算各元素的正负号
ceil 计算大于等于该元素的最小整数
floor 计算小于等于该元素的最大整数
rint 将该元素四舍五入到最接近的整数
modf 返回该元素的小数和整数部分,以两个独立数组的形式
isnan is not a number 判断各元素是否是数字
isfinite isinf 判断各元素有穷无穷
cos/sin/tan
arccos/acccosh/arcsin
对两个数组元素操作的函数
add 将数组中元素相加
subtract 第一个数组中元素减去第二个数组中元素
multiply 数组对应元素相乘
divide floor_divide 除法、丢弃余数的除法
power(a,b) 将a中元素计算b中对应元素 a的b次方
mod 求除法的余数
copysign 将第二个数组中的元素符号赋值给第一个数组中的值
< >= <= == != 比较对应元素的值
logical_and/logical_or/logical_xor
5.一些可以用数组来处理的运算
矢量化方便运算
三元运算
In [6]: xarr = np.array([1.1,1.2,1.3,1.4,1.5])
In [7]: yarr = np.array([2.1,2.2,2.3,2.4,2.5])
In [8]: cond = np.array([True,False,True,True,False])
In [9]: result = [x if c else y for x ,c ,y in zip(xarr,yarr,cond)]
In [10]: result
Out[10]: [1.1, 1.2, 1.3, 1.4, 1.5]
np.where通常用于根据一个数组生成另外一个数组
In [11]: result2 = np.where(cond,xarr,yarr)
In [12]: result2
Out[12]: array([1.1, 2.2, 1.3, 1.4, 2.5])
数学和统计方法
这些方法既可以当做实例方法调用arr2d.sum()也可以通过np.sum(arr2d)
sum 计算所有元素的和
mean 计算所有元素的均值
std/var 计算标准差和方差
min/max 最大值和最小值
argmin/argmax 最小值和最大值的索引
cumsum 返回一个所有元素累加的数组 累计和
cumprod 所有元素的累计积
用于布尔型数组的方法
#True直接当1计算
In [24]: (arr2d<4).sum()
Out[24]: 3
In [25]: cond
Out[25]: array([ True, False, True, True, False])
In [26]: cond.any()
Out[26]: True
In [27]: cond.all()
Out[27]: False
排序
np.sort() 这个会复制一个副本
arr2d.sort()是在源数据上的操作
6.用于数组文件的输入输出
将数组以二进制形式保存到磁盘
np.save()
np.load()
存取文本文件
np.loadtext()
np.savetext()
7.线性代数 找不到时就在numpy.linalg
注:转置 arr.T
np.dot(arr1,arr2) 两个矩阵的乘积
np.diag 返回对角线元素/或以一维数组转化为以此为对角线的方阵
trace() 计算对角线的和
det 计算f方阵的行列式值
eig 计算特征值和特征向量
inv 计算逆矩阵
pinv 计算伪逆矩阵
qr 计算QR分解
svd 计算奇异值分解
solve 解线性方程Ax=b
lstsq 计算Ax=b的最小二乘解
8.随机数生成 numpy.random对Python内置的random进行了补充
seed 确定随机数生成的种子
permutation 返回一个序列的随机排列或返回一个随机排列的范围
shuffle 对一个序列就地随机排列
rand 产生均匀分布的样本值
randint 从给定的上下范围内随机选取整数
randn 产生正态分布的样本值
binomial 产生二项分布的样本值
normal 产生二项分布的样本值
beta 产生Beta分布的样本值
chisquare 产生卡方分布的样本值
gamma 产生Gamma分布的样本值
uniform 产生(0,1)均匀分布的样本值
python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算相关推荐
- python输入坐标求面积_利用python中的坐标计算多边形面积
您没有正确实现Shoelace formula.我修改了一点你的代码来修复它:sum1=0.0 sum2=0.0 b=input("Number of corners: ") ma ...
- python读取csv求平均数_利用Python读取CSV文件并计算某一列的均值和方差
近日需要对excel的csv文件进行处理,求取某银行历年股价的均值方差等一系列数据 文件的构成很简单,部分如下所示 总共有接近七千行数据,主要的工作就是将其中的股价数据提取出来,放入一个数组之中,然后 ...
- python用渐变色画圆_利用python控制Autocad:pyautocad方式
发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...
- 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...
- python 打卡记录代码_利用Python实现对考勤打卡数据处理的总结
利用Python实现对考勤打卡数据处理的总结 一.背景交代 二.说明 三. 8种方法 1. 查看文件是否存在 2. 导入excel文件,并把数据保存为dataframe格式 3. 计算程序运行时间 4 ...
- python自动生成word报告_利用Python实现报告自动生成
前几天,在网上看到一篇介绍利用Python组件实现MS word内容生成的文章.可能是很久没接触编码,感觉在技术领域变得有点孤陋寡闻了,看见一些实用的功能都觉的屌屌的.以前经常通过代码写Excel文件 ...
- python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...
其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...
- python制作心形照片墙_利用python生成照片墙的示例代码
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...
- python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
最新文章
- 如何成为一名现代的Linux程序员
- puppet原理及配置
- dods 机器人_胜利之日机器人补丁
- runloop - 介绍
- java 类无法实例_Java无法从类实例访问类方法
- Magento: 解决 Bootstrap 3 与prototype并用的时候, 下拉菜单消失的问题 Bootstrap 3 dropdown menu dis...
- PostgreSQL中查看版本的几种方式
- html 甘特图_工具项目管理工具详解——甘特图
- [刘阳Java]_CSS数字分页效果
- Servlet chapter 1
- HBuilderX的各版本软件自取
- 机器学习笔记 - 使用Keras + Unet 进行图像分割
- 云杰恒指:7.29恒指期货实盘指导交易复盘
- 微信 css area,微信小程序--手写一个地区选择器(多级联动)
- 基于51单片机手机电话拨号盘模拟proteus仿真
- 第一章 计算机基础知识【信息学奥赛】
- 使用 Web3.js 进行 Matic 测试网上链操作
- hbuilder能用python_hbuilder之开发Python。
- 【深度学习小知识】K-means聚类
- JDK11 新特性详解