第一节 anaconda+jupyter+numpy简单使用

  数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律

  数据分析三剑客:Numpy,Pandas,Matplotlib 

一 Anaconda

1 下载

官网:https://www.anaconda.com/distribution/

2 安装

https://blog.csdn.net/u012318074/article/details/77075209

3 基本使用

http://python.jobbole.com/86236/

二 jupyter

1 在文件中启动cmd文件

2 输入jupyter notebook

3 快捷键

  插入cell: a(之前插入),b(之后插入)

  删除cell: x

  切换cell模式: y 切换为code模式

        m 切换为markdowm 模式(显示html样式)

  运行代码:shift+enter

  自动补全代码:tab

  查看帮助文档:shift+tab

  进入编辑:鼠标双击

三 numpy(重点)

  NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

import numpy as np

一 创建数组

1. 使用np.array()创建

   创建一维数组

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

  创建二维数组

a1 = np.array([[1,4,3],[4,5,6],[7,8,9.5]])

注意:
numpy默认ndarray的所有元素的类型是相同的
如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int

  n维数组

import matplotlib.pyplot as plt

img_arr = plt.imread(‘./bobo.jpg‘)  #图片路径

plt.imshow(img_arr) #显示图片

2 使用np的routines函数创建  

1) np.ones(shape, dtype=None, order=‘C‘)

shape:数组的尺寸(2,3,3) 2行3列3页的数组

dtype:数据类型(str,int,float)
np.ones((4,6))  #创建全1矩阵 4x6

2) np.zeros(shape, dtype=None, order=‘C‘) #创建全0矩阵  np.zeros((2,3))

3) np.full(shape, fill_value, dtype=None, order=‘C‘) #指定填充数据,创建矩阵

5) np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列

start:起始值
stop:终止值
num:个数
endpoint:是否包含终止值,true表示包含
retstep:是否返回步长

6) np.arange([start, ]stop, [step, ]dtype=None) #根据步长取数

7) np.random.randint(low, high=None, size=None, dtype=‘l‘) #产生随机整数
np.random.seed(100)  #不在随机
np.random.randint(0,100,size=(5,3))

8) np.random.randn(d0, d1, ..., dn)  #正态分布中随机取数值
9) np.random.random(size=None)  #生成0到1的随机数,左闭右开 

二  ndarray的属性

np.random.seed(100)
arr=np.random.randint(50,100,size=(5,5))
arr

数组性质:

arr.shape  #数组的各维度尺寸,返回元组

arr.size #返回各维度尺寸的乘积

arr.dtype #返回数组的数据类型

type(arr) #返回数组类型

三 ndarray 的基本操作

  1 索引 :一维与列表完全一致 多维时同理

np.random.seed(10)
arr = np.random.randint(0,100,size=(5,5))
arr

arr[1][3] = 10000 #索引并赋值

  2 切片:一维与列表完全一致 多维时同理

格式:

arr[:,:,] 不同维度用‘,‘隔开,[行索引,列索引]
#获取二维数组前两行
arr[0:2] 
#获取二维数组前两列
arr[:,0:2] #逗号之间表示的行,逗号后面表示的列的切片
#获取二维数组前两行和前两列数据
arr[0:2,0:2]

  3 数据反转 ,例如[1,2,3]---->[3,2,1]   --->  ::进行切片

#将数组的行倒序
arr[::-1]
#列倒序
arr[:,::-1]
#全部倒序
arr[::-1,::-1]

  4 图片的反转

cat_arr=plt.imread(‘part_1/cat.jpg‘) #获取图片数据

res_cat_arr=cat_arr[::-1,::-1,::-1] #数据反转

plt.imshow(res_cat_arr) #显示图片

             (未反转)                                                                           (反转后)

  5 变形

使用arr.reshape()函数,注意参数是一个tuple!
arr_1.reshape((25,1)) #将多维数组变形成一维数组

arr_1.reshape((-1,5))  #-1表示自动计算行数

  使用变形图片倒置

img_arr.shape #获取图片数组的尺寸

#将元数据变形成一维
img_arr_one_ndim = img_arr.reshape((626*413*3))

#将变形后的一维数组中的元素全部倒置
img_arr_one_ndim = img_arr_one_ndim[::-1]

#重新塑造回原先的多维数组
arr_img_finally = img_arr_one_ndim.reshape((626,413,3))

plt.imshow(arr_img_finally) #展示图片 

          

  6 级联

  • np.concatenate()
np.concatenate((arr1,arr2),axis=1)    #axis=0 纵轴  1横轴

  • 图片的合并---九宫格
tree_arr=np.concatenate((cat_arr,cat_arr,cat_arr),axis=1) #横向合并

nine_arr=np.concatenate((tree_arr,tree_arr,tree_arr),axis=0) #纵向合并

plt.imshow(nine_arr) 

  • np.hstack与np.vstack
np.vstack((arr,arr1))  垂直方向级联
np.vstack((arr,arr1))  纵向方向级联
级联需要注意的点:
  1 级联的参数是列表:一定要加中括号或小括号
  2 维度必须相同
  3 形状相符:在维度保持一致的前提下,如果进行横向(axis=1)级联,    必须保证进行级联的数组行数保持一致。如果进行纵向(axis=0)级联,    必须保证进行级联的数组列数保持一致。
  4 可通过axis参数改变级联的方向

  6 切分

与级联类似,三个函数完成切分工作:
  np.split(arr,行/列号,轴):参数2是一个列表类型
  np.vsplit 垂直方向切割
  np.hsplit 水平方向切割
arr

np.split(arr,(2,4),axis=1)   #在纵向索引为2,4的位置切割

  •   切割照片
cat_arr=plt.imread(‘part_1/cat.jpg‘)#获取图片数据

c1,c2,c3=np.split(cat_arr,(150,360),axis=0) #纵向切割,并解包

plt.imshow(c1)

plt.imshow(c2)

plt.imshow(c3)

  7 副本

  所有赋值运算不会为ndarray的任何元素创建副本。对赋值后的对象的操作也对原来的对象生效。

arr_= arr.copy() #产生一个arr一样的副本

四 ndarray 的聚合操作

  • 求和np.sum
arr.sum(axis=1) #横向求和

arr.sum(axis=0) #纵向求和
  • 最大值最小值 np.max/np.min
arr.max(axis=1) #横向取最大

arr.max(axis=0) #纵向取最大
  • 平均值 np.mean()
arr.mean()  #取所有数据的平均值
  • 其他聚合操作
Function Name    NaN-safe Version    Description
np.sum    np.nansum    Compute sum of elements
np.prod    np.nanprod    Compute product of elements
np.mean    np.nanmean    Compute mean of elements
np.std    np.nanstd    Compute standard deviation
np.var    np.nanvar    Compute variance
np.min    np.nanmin    Find minimum value
np.max    np.nanmax    Find maximum value
np.argmin    np.nanargmin    Find index of minimum value
np.argmax    np.nanargmax    Find index of maximum value
np.median    np.nanmedian    Compute median of elements
np.percentile    np.nanpercentile    Compute rank-based statistics of elements
np.any    N/A    Evaluate whether any elements are true
np.all    N/A    Evaluate whether all elements are true
np.power 幂运算

五 广播机制

【重要】ndarray广播机制的三条规则:缺失维度的数组将维度补充为进行运算的数组的维度。缺失的数组元素使用    已有元素进行补充。

  规则一:为缺失的维度补1(进行运算的两个数组之间的维度只能相差一个维度)
  规则二:缺失元素用已有值填充
  规则三:缺失维度的数组只能有一行或者一列
例1:
m = np.ones((2, 3))
a = np.arange(3)

六 、ndarray的排序

np.sort()与ndarray.sort()都可以,但有区别:

np.sort()不改变输入
ndarray.sort()本地处理,不占用空间,但改变输入
np.sort(arr,axis=1)  #横向排序

np.sort(arr,axis=0) #纵向排序

 

 

原文地址:https://www.cnblogs.com/angle6-liu/p/10384591.html

时间: 2024-10-12 11:50:04

第一节 anaconda+jupyter+numpy简单使用的相关文章

[struts2学习笔记] 第一节 关于struts2的简单认知

本文地址:http://blog.csdn.net/sushengmiyan/article/details/40298287 官方文档:http://struts.apache.org/release/2.3.x/docs/home.html 本文作者:sushengmiyan -------------------------------------------------------------------------------------------------------------

萌新向Python数据分析及数据挖掘 第一章 Python基础 第一节 python安装以及环境搭建 第二节 变量和简单的数据类型

本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 第一节 Python安装以及环境搭建 Python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不错的选择. Anaconda详细安装使用教程 https://blog.csdn.

第一节 构建一个简单的WCF应用

先吐个槽,到目前为止接触的东西也就是些ado.net.select.delete.update.create.临时表的批量操作.及稍微复杂点的几个表之间查询再带几个excel导入导出 然后会点前端的js.jquery等,所以在公司目前薪水并不高(能在广州生活下去吧,什么买车买房的想都别想),拿自己身边的同志一比较感觉心里不怎么平衡,凡事还是得靠自己 自强才是硬道理,就吐到这里吧!开始我的wcf之旅吧 本人理工科类型的文笔很烂 希望各位大神不要喷小弟哦(参照的书本:WCF全面解析) 咱们还是从小学

第一节,基本用法

推荐播客:我的Tensorflow学习之路 http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/basic_usage.html 项目代码: https://github.com/yongyehuang/Tensorflow-Tutorial 一 TensorFlow安装 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tsnsor(张量)意味着N维数组,Flo

第一节课作业

1 C语言是在国内外广泛使用的一种计算机语言.其语言功能丰富.表达能力强.使用灵活方便.既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件.其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,Unix,Linux,Mac,os/2,无一例外,哪一个不是C语言写的?很多新型的语言如,C++,Java,C#,J#,perl...都是衍生自C语言.掌握了C语言,可以说你就掌握了很多门语言. 学习C程序这门课一年了,这是我们学的第一门专业课,在大学里C语言不

C#第一节课作业,HelloWorld

通过第一节课的学习,我们掌握了一些C#的基本知识.无论是C#的名字的由来还是有关Hello World和Console都让我受益匪浅. 回到家后,我首先实验了一下最简单的Hello World▼ 成功了√ 然后,我实验了一下省去System的写法▼ 成功了√ 这之后我又试了一下同文件中的调用▼ 成功了√ 之后是调节字和背景的颜色▼ 成功了√ 之后我尝试了不同文件的调用▼ 成功了√ 然后我试了下分步执行▼ 成功了√ 然后我设置了变量▼ 成功了√ 最后我试验了一下ResetColor的用法▼ 成功了

CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第一节

原文链接 第一节 CUDA 让你可以一边使用熟悉的编程概念,一边开发可在GPU上运行的软件. Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个国家级的实验室进行大型并行运算的研究,并且是几个新创企业的合伙人.大家可以发邮件到[email protected]与他沟通和交流. 您是否有兴趣在使用高级语言(比如C编程语言)编程时,通过标准多核处理器将性能提升几个数量级?您是否期待拥有跨多个设备的伸缩能力

数论部分第一节:素数与素性测试【详解】

数论部分第一节:素数与素性测试 一个数是素数(也叫质数),当且仅当它的约数只有两个——1和它本身.规定这两个约数不能相同,因此1不是素数.对素数的研究属于数论范畴,你可以看到许多数学家没事就想出一些符合某种性质的素数并称它为某某某素数.整个数论几乎就围绕着整除和素数之类的词转过去转过来.对于写代码的人来说,素数比想像中的更重要,Google一下BigPrime或者big_prime你总会发现大堆大堆用到了素数常量的程序代码.平时没事时可以记一些素数下来以备急用.我会选一些好记的素数,比如4567

Dojo第一节:学会使用firebug对js,Dojo进行调适

内容概要: 学会使用firebug的基本功能 1. 简单介绍:Firebug是Firefox的一个插件,用来对js代码进行调适的工具. (官方废话:Firebug是firefox下的一个插件,能够调试所有网站语言,如Html,Css等,但FireBug最吸引我的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下都能使用(IE,Firefox,Opera, Safari).除此之外,其他功能还很强大,比如html,css,dom的查看与调试,网站整体分析等等.总之就是一整套完整