文档章节

Python数据分析numpy(1)

十年磨一剑3344
 十年磨一剑3344
发布于 07/21 17:12
字数 1539
阅读 15
收藏 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
粉丝 16
博文 60
码字总数 52312
作品 0
昌平
程序员
从零开始用Python3做数据分析

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

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

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

大数据文摘
04/19
0
0
3 个用于数据科学的顶级 Python 库

使用这些库把 Python 变成一个科学数据分析和建模工具。 Python 的许多特性,比如开发效率、代码可读性、速度等使之成为了数据科学爱好者的首选编程语言。对于想要升级应用程序功能的数据科学...

作者: Dr.michael J.garbade
10/04
0
0
通过python实现神经网络的基础的基础:numpy

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

单线程程序员
09/30
0
0
一篇文章掌握Numpy的基本用法

使用numpy进行向量化运算 从上面的运行结果可以看出,numpy的向量化运算的效率要远远高于python的循环遍历运算(效率相差好几百倍)。 (1ms=1000µs) 2 创建ndarray数组 首先需要导入numpy...

dby_freedom
10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

io流

码农屌丝
15分钟前
0
0
SpringBoot基础篇之重名Bean的解决与多实例选择

更多Spring文章,欢迎点击 一灰灰Blog-Spring专题 当通过接口的方式注入Bean时,如果有多个子类的bean存在时,具体哪个bean会被注入呢?系统中能否存在两个重名的bean呢?如果可以,那么怎么...

小灰灰Blog
25分钟前
0
0
记录一次dubbo项目实战

一、案例说明 存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表。 二、环境搭建 安装zookeeper,解压(zookeeper-3.4.8.tar.gz)得到如下: 然后进入conf将zoo_s...

Java烂猪皮
29分钟前
0
0
拜托,别再问怎么深入学习分布式架构了!

由于分布式系统所涉及到的领域众多,知识庞杂,很多新人在最初往往找不到头绪,不知道从何处下手来一步步学习分布式架构。 本文试图通过一个最简单的、常用的分布式系统,来阐述分布式系统中...

Java架构资源分享
30分钟前
0
0
《netty入门与实战》笔记-05:心跳与空闲检测

本小节,我们一起探讨最后一个话题:心跳与空闲检测 首先,我们来看一下,客户端与服务端之间的网络会存在什么问题? 1. 网络问题 下图是网络应用程序普遍会遇到的一个问题:连接假死 连接假...

Funcy1122
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部