文档章节

Python数据分析numpy(1)

十年磨一剑3344
 十年磨一剑3344
发布于 07/21 17:12
字数 1539
阅读 8
收藏 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
入门 | 数据科学初学者必知的NumPy基础知识

  选自TowardsDataScience   作者:Ehi Aigiomawu   机器之心编译   参与:李诗萌、路      本文介绍了一些 NumPy 基础知识,适合数据科学初学者学习掌握。      NumPy(Num...

机器之心
04/21
0
0
[雪峰磁针石博客]scikit-learn_cookbook1: 高性能机器学习-NumPy

源码下载 在本章主要内容: NumPy基础知识 加载iris数据集 查看iris数据集 用pandas查看iris数据集 用NumPy和matplotlib绘图 最小机器学习配方 - SVM分类 介绍交叉验证 以上汇总 机器学习概述...

Python测试开发人工智能
07/27
0
0
如何让C/C++代码同时兼容Python2和Python3

Python2和Python3的差异很大,这是为什么很多人都不愿意升级的原因。如果你用C/C++为Python2写过扩展模块,那么直接用Python3来编译是通不过的。这篇文章分享下如何编写兼容的C/C++代码。 环...

yushulx
2017/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx模块学习六 add_header 跨域访问

语法 Syntax: add_header name value [always];Default: --Context:http,server,location,if in location 例:/etc/nginx/conf.d/default.conf server {    listen       80; ......

Romanceling
今天
0
0
SpringBoot初探

#SpringBoot初探 三种创建SpringBoot项目的方式: 第一种:使用IDEA创建maven项目,选择maven-archetype-quickstart; 第二种:使用IDEA创建Spring Initializer,选择web组件; 第三种:使用...

向码而生
今天
2
0
IO

JAVA中IO技术:BIO、NIO、AIO 1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方...

DemonsI
今天
0
0
org.apache.commons 常用工具类

一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。 toString 转换IO流、 Uri、 byte[]为String。 copy IO流数据复制,...

sprouting
今天
0
0
linux使用Inotify监控目录或者文件状态变更

基本概念: Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 需求: 1.有一个文件采集进程,...

mickelfeng
今天
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部