2018.06.12******************************************************
author:wills
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产.
这些数据通常是万亿或EB的大小数量级。这些数据收集自各种各样的来源:各种传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。
大数据分析是研究大量的数据的过程中寻找模式,相关性和其他有用的信息,可以帮助企业更好地适应变化,并做出更明智的决策。这里就涉及到对数据的分析,那么我们用什么来分析这些数据呢?
python中有专门为了处理数据开发出来的库numpy,matplotlib安装命令很简单.并且为了进一步简化,我们可以使用一个叫anaconda的工具,它集成了几乎所有数据分析需要使用的相关工具库,然后直接使用jupyter打开,在这个环境下进行数据分析
如何在其他地方使用,可以使用如下命令安装
pip intall numpy
pip install matplotlib
下面通过一张图片来认识了解numpy这个库,以及其中丰富的函数
首先我们需要知道,图片,音视频,都是由一串数据流组成的,彩色图片是三维的数据流,黑白照片是二维的数据流
# 先导入相关的模块
import numpy as np
import matplotlib.pyplot as plt
读取图片数据流,存入cat
# 这里需要注意图片的路径不能写错
cat = plt.imread('cat.jpg')
# 获取图片的尺寸,数据流或者维度,结果如下
display(cat,cat.shape)
# 输出结果
array([[[231, 186, 131],
[232, 187, 132],
[233, 188, 133],
...,
[100, 54, 54],
[ 92, 48, 47],
[ 85, 43, 44]],
[[232, 187, 132],
[232, 187, 132],
[233, 188, 133],
...,
[100, 54, 54],
[ 92, 48, 47],
[ 84, 42, 43]],
[[232, 187, 132],
[233, 188, 133],
[233, 188, 133],
...,
[ 99, 53, 53],
[ 91, 47, 46],
[ 83, 41, 42]],
...,
[[199, 119, 82],
[199, 119, 82],
[200, 120, 83],
...,
[189, 99, 65],
[187, 97, 63],
[187, 97, 63]],
[[199, 119, 82],
[199, 119, 82],
[199, 119, 82],
...,
[188, 98, 64],
[186, 96, 62],
[188, 95, 62]],
[[199, 119, 82],
[199, 119, 82],
[199, 119, 82],
...,
[188, 98, 64],
[188, 95, 62],
[188, 95, 62]]], dtype=uint8)
(456, 730, 3)
# 将图片画出来
plt.imshow(cat)
# 获取cat数据类型
type(cat) # numpy.ndarray 特殊数组类型
# 获取cat数组中数据的类型
cat.dtype
# dtype('uint8') 无符号int8类型,表示0-255的整数
#修改cat数组中元素的类型
cat.astype(np.float64)
numpy中最重要的一个形式叫ndarray
n表示n个d(dimension)维度的array数组
python本身支持的数值类型有int,float,complex
Numpy支持比python本身更加丰富的数值类型:
类型 | 描述 | 值 |
---|---|---|
1.bool | 布尔型,1个字节 | True或False |
2.int | 整数类型 | int64或int32 |
3.intc | 与C中int相同 | int32或int64 |
4.intp | 用于索引 | int32或int64 |
5.int8 | 1字节 | -128 ~ 127 |
6.int16 | 整数 | -32768 ~ 32767 |
7.int32 | 整数 | -2147483648 ~ 2147483647 |
8.int64 | 整数 | -9223372036854775808 ~ 9223372036854775807 |
9.uint8 | 无符号整数 | 0 ~ 255 |
10.uint16 | 无符号整数 | 0 ~ 65535 |
11.uint32 | 无符号整数 | 0 ~ 4294967295 |
12.uint64 | 无符号整数 | 0 ~ 18446744073709551615 |
13.float | float64的简写 | float64 |
14.float | 半精度浮点 | 5位指数,10位尾数 |
15.float32 | 单精度浮点 | 8位指数,23为尾数 |
16.float64 | 双精度浮点 | 11位指数,52位尾数 |
17.complex | complex128简写 | complex128 |
18.complex64 | 复数 | 由2个32位浮点数表示 |
19.complex128 | 复数 | 由两个64位浮点数表示 |
在Numpy中上面的数值类型都归于data(data-type),可以使用numpy.dtype(object,align,copy)来指定数值类型。而在数值中,可以使用dtype=参数
numpy中,ndarray有6个参数,分别是:
shape: 数组的形状
dtype:数据类型
buffer:对象暴露缓存区接口
offset:数组数据偏移量
strides:数据步长
order:{‘C’, ‘F’} 以行或者列为主排列顺序
Numpy有5种途径创建数组
1 从python数据结构 列表,元组等转换
2 使用np.arange,np.ones,np.zeros 等numpy原生方法
3 从存储空间读取数据
4 通过使用字符串或者缓存区从原始字节创建数组
5 使用特殊函数,比如random
- 方法一 原生python列表,元组转换
l = list('12345')
nd = np.array(l)
- 方法二 arange()函数
arange()函数是在给定区间创建一些列均匀间隔的值
numpy.arange(start, stop, step, dtype=None)
首先设置值所在的区间[开始,停止),这是一个半开半闭区间,能取头不能取尾,step步长设置每个值之间的间隔
在这里我有一句MMP不知当讲不当讲,下面还有无数的内容,结果因为电脑卡了一下,浏览器关闭,啥都没了3个小时的成果就剩这么一丢丢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。拜