文档章节

Python数据分析numpy(1)

十年磨一剑3344
 十年磨一剑3344
发布于 2018/07/21 17:12
字数 1539
阅读 26
收藏 2

Python开源的科学计算基础库

1.表示N维数组对象ndarray

2.线性代数、傅里叶变换、随机数生成

3.广播函数,整合c++、c

一.数据的维度

1.数据

2.数据维度

3.一维数据

(1)特点

(2)Python中的表达方式

列表、集合类型

(3)列表和数组的区别

数据类型要求不一样

4.二维数据

(1)概念,多个一位数据组成,一个以为数据的组合。

(2)列表

5.多维数据

(1)

(2)列表

6.高维数据

(1)仅利用最基本的二元关系展示数据间的复杂关系

(2)字典类型或者数据表示格式

 

二.numpy库中的N维数组对象ndarray

1.使用numpy数组原因:

(1)节省空间

(2)numpy的底层实现靠c语言实现的,提高运行速度。

代码示例:

2.N维数组对象-ndarray

(1)组成

实际的数据

描述这些数据的元数据(数据维度、数据类型等)

轴、秩

方法 功能
.ndim
.shape

.size

元素个数
.dtype 数据类型
.itemsize 元素所占的字节

import numpy as np
a=np.array([[0,1,2,3,4],[9,8,7,6,5]])# -*- coding: utf-8 -*-
print(a.ndim)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.itemsize)

输出:

2
(2, 5)
10
int32
4

 

(2)要求所有的元素类型相同,数组下标从0开始。

(3)实例

(4)支持那么多数据类型原因

(5)不同质数据类型

()

3.ndarray数组的创建方法

(1)从Python的列表、元组等等类型创建ndarray数组

x=np.array(list/tuple),detype=数据类型)

不指定元素类型,根据读入的数据类型确定,根据最高级确定数据类型。

 

(2)使用numpy中函数创建ndarray数组,如arange,ones,Zeros等

最常用的方法

函数 作用 具体应用
np.arange(n) 类似range()函数,返回ndarray类型,元素从0到-1  
np.ones(shape) 根据shape生成一个全1数组,shape是元组类型 np.ones(2,3)
np.zeros(shape) 根据shape生成一个全0数组,shape是元组类型  
np.full(shape,val) 根据shape生成一个数组,每个元素值都是val  
np.eye(n) 创建一个证放的n*n单位矩阵,对角线为1,其余为0  

代码示例:

import numpy as np
#arange生成的为整数类型
print(np.arange(10))
#其他的都为浮点数类型
print(np.ones((3,6)))
print(np.zeros((3,6)))
print(np.eye(5))
输出:

[0 1 2 3 4 5 6 7 8 9]
[[1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1.]]
[[0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]]
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
生成多维数组

代码示例:

import numpy as np
x=np.ones((2,3,4))
print(x)
print(x.shape)#最外层到最内层元素变化的方式。

输出:

[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]
(2, 3, 4)
 

 

 

(3)从字节流(raw bytes)中创建ndarray数组

(4)从文件读取特定格式,创建ndarray数组

(5)数据类型多为浮点数,符合现实计算的思维。

(6)ndarray数组的变换

astype:创建一个新的数组

(7)数组转换为Python中列表

3.ndarray数组的操作

(1)数组的索引和切片

索引:获取数组中特定元素位置的过程(找到元素在数组中的位置)。

切片:获取数组元素子集的过程(获得数组元素一部分)。

示例

一维数组索引:和Python列表中一样。

一维数组的切片:和Python列表切片一样。

多维数组的索引和切片首先要分辨出对象为几维的数组。

多维数组索引:a[1,2,3]表示的是:第一个维度的第二个轴的元素,第二个维度的第三个轴的元素,第三个维度的最后一个轴的第四个位置的元素。(由外而内的去寻找索引位置)

多维数组的切片:a[:,1:3,:],从外而内的寻找切片内容。

代码示例:

import numpy as np
a=np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
print(a[1,2,3])
print(a[:,1:3,:])
print(a[:,:,::2])

输出:

24
[[[ 5  6  7  8]
  [ 9 10 11 12]]

 [[17 18 19 20]
  [21 22 23 24]]]
[[[ 1  3]
  [ 5  7]
  [ 9 11]]

 [[13 15]
  [17 19]
  [21 23]]]
可以对创建后的ndarray的维度和元素类型进行变换。
4.ndarray的运算

(1)数组与标量之间的运算

数组与标量之间的运算作用与数组的每一个元素。

代码示例:

 

(2)numpy中的一元函数,对数组的运算就是对数组中每一个元素的运算。

函数 作用
np.abs(x)  np.fabs(x) 计算数组各元素的绝对值
np.sqrt(x) 计算数组各元素的平方根
np.square(x) 计算数组各元素的平方
np.log(x) 、np.log10(x)、nplog2(x) 计算数组各元素的自然对数、10底数和2底对数
np.ceil(x)、np.floor(x) 计算数组各元素的ceiling值或floor值

代码示例:

import numpy as np
a=np.arange(24).reshape((2,3,4))
np.square(a)
print(a)
a=np.sqrt(a)
print(a)
a=np.modf(a)
print(a)

输出:

 

特点:进行一元函数操作后会生成一个新的数组,原来的数组没有被改变,想要改变原来的数组需要把改变后的值赋给旧的数组。

(3)numpy的二元函数,对两个数组运算的函数(其实是对两数组中的每个元素的运算)。

代码示例:

import numpy as np
a=np.arange(24).reshape((2,3,4))
b=np.square(a)
c=np.maximum(a,b)
print(c)
print(a>b)

输出:

[[[  0   1   4   9]
  [ 16  25  36  49]
  [ 64  81 100 121]]

 [[144 169 196 225]
  [256 289 324 361]
  [400 441 484 529]]]
[[[False False False False]
  [False False False False]
  [False False False False]]

 [[False False False False]
  [False False False False]
  [False False False False]]]
 


附件参考资料链接:http://www.cnblogs.com/WSX1994/articles/9061516.html

© 著作权归作者所有

共有 人打赏支持
十年磨一剑3344
粉丝 17
博文 60
码字总数 52312
作品 0
昌平
程序员
私信 提问
从零开始用Python3做数据分析

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书 ——异步小编 欢迎来到Python数据分析的世界!如今,Python已成为数据分析和数据...

异步社区
2018/05/19
0
0
手把手 | 哇!用R也可以跑Python了

     大数据文摘作品   编译:大茜、钱天培   R还是Python?   真是个千古难题!   如果你主要从事数据分析、统计建模和可视化,R大概是你的不二之选。但如果你还想来搞点深度学...

大数据文摘
2018/04/19
0
0
通过python实现神经网络的基础的基础:numpy

numpy是python高性能科学计算和数据分析的基础包,python的很多其他库都构建在numpy之上,因此你要用python做数据分析与挖掘都最好先学一下numpy的基本操作(当然要学numpy首先要把python语言...

单线程程序员
2018/09/30
0
0
C# 机器学习库 - NumSharp

NumPy是在python中处理数据的最基本和最强大的包。 如果您打算从事数据分析或机器学习项目,那么对numpy的充分理解几乎是必须的。 其他用于数据分析的软件包(如pandas)是建立在numpy之上,...

Oceania2018
2018/11/16
0
0
NumSharp  - Numerical .NET

NumPy是在python中处理数据的最基本和最强大的包。 如果您打算从事数据分析或机器学习项目,那么对numpy的充分理解几乎是必须的。 其他用于数据分析的软件包(如pandas)是建立在numpy之上,...

Oceania2018
2018/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部