利用python进行数据分析-02

Ndarray:多维数组对象

ndarray是一个通用的同构数据多维容器,每个数组均有一个shape(表示维度大小)和dtype(说明数组数据类型的对象):

eg:>>>data.shape

(2,3)

>>>data.dtype

dtype(‘float64‘)

1、创建ndarray

data1创建arr1的ndarray数组

data1 = [1.2,23,3,23,4,6]
arr1 = np.array(data1)

zeros(10,10) 和 ones(10,10)  可以分别创建制定长度、维度的数组,empty可以创建空的数组
numpy关注是数值计算,因此,若没有一般制定,数据类型基本都是float64.

np.arange(15)    #返回一个ndarray而不是列表

ndarray的数据类型dtype是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息:

arr1 = np.array([1,2,3],dtype=np.float64)

ndarray可通过astype的方法来显式转换其dtype:

float_arr = arr.astype(np.float64)

大小相等的数组之间可以将运算运算到元素级。不同大小的数组之间运算叫做 广播。

2.基本的索引和切片

啊啊啊啊啊啊,坑爹的浏览器,我的笔记全丢了,以后再补吧!

3、布尔型索引

>>> import numpy as np
>>> names = np.array([‘Bob‘,‘Joe‘,‘Will‘,‘Bob‘,‘Will‘,‘Joe‘,‘Joe‘])
>>> data = np.random.randn(7,4)
>>> names == ‘Bob‘ #产生布尔型数组
array([ True, False, False,  True, False, False, False], dtype=bool)>>> data[names == ‘Bob‘]array([[ 0.91085438, -0.83674359,  1.2117743 , -0.40052236],       [ 0.2068526 , -0.41068779,  0.83953301, -0.93918484]])

同时可联合切片也可以:

>>> data[names == ‘Bob‘,:2]
array([[ 0.91085438, -0.83674359],
       [ 0.2068526 , -0.41068779]])
>>> data[data<0] = 0    #将小于0的值进行赋值
>>> data
array([[ 0.91085438,  0.        ,  1.2117743 ,  0.        ],
       [ 0.        ,  1.08886269,  1.82398061,  2.28503012],
       [ 0.        ,  1.33202507,  0.        ,  0.        ],
       [ 0.2068526 ,  0.        ,  0.83953301,  0.        ],
       [ 0.        ,  0.13073222,  0.33671297,  0.        ],
       [ 0.        ,  0.62412247,  0.        ,  0.        ],
       [ 0.68182239,  0.        ,  0.        ,  0.        ]])

4、花式索引

指利用整数数组进行索引,假设现有一个8*4数组:

arr = np.arange(32).reshape((8,4))
>>> arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23],
       [24, 25, 26, 27],
       [28, 29, 30, 31]])
>>> arr[[1,5,7,2],[0,3,1,2]]
array([ 4, 23, 29, 10])

得到数组的矩形切片

>>> arr[[1,5,7,2]][:,[0,3,1,2]]
array([[ 4,  7,  5,  6],
       [20, 23, 21, 22],
       [28, 31, 29, 30],
       [ 8, 11,  9, 10]])

得到上面的结果也可使用此代码

>>> arr[np.ix_([1,5,7,2],[0,3,1,2])]
array([[ 4,  7,  5,  6],
       [20, 23, 21, 22],
       [28, 31, 29, 30],
       [ 8, 11,  9, 10]])

5、数组转置和轴对换

T属性:

arr = np.arange(15).reshape((3,5))
>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> arr.T
array([[ 0,  5, 10],
       [ 1,  6, 11],
       [ 2,  7, 12],
       [ 3,  8, 13],
       [ 4,  9, 14]])

利用np.dot计算矩阵内积:

>>> arr = np.random.randn(6,3)
>>> np.dot(arr.T,arr)
array([[ 3.67517253, -0.57586473, -3.36499059],
       [-0.57586473,  9.52179993, -0.74028303],
       [-3.36499059, -0.74028303,  3.42469162]])

高维数组需要得到一个由轴编号组成的元祖才能进行转置:

arr = np.arange(16).reshape((2,2,4))
>>> arr
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])
>>> arr.transpose((1,0,2))
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])

swapaxes方法:

>>> arr.swapaxes(1,2)
array([[[ 0,  4],
        [ 1,  5],
        [ 2,  6],
        [ 3,  7]],

       [[ 8, 12],
        [ 9, 13],
        [10, 14],
        [11, 15]]])

swapaxes 也是返回源数据的视图

时间: 2024-08-10 21:27:47

利用python进行数据分析-02的相关文章

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行

《利用python进行数据分析》

今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7.3-1-win-x86.msi,译者建议按照作者的版本安装.

利用python进行数据分析——(一)库的学习

总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn 一. Numpy: 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指 针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象.对于数值运算来说这种结构显然比较浪费内存和CPU计算时间. 此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和

PYTHON学习(三)之利用python进行数据分析(1)---准备工作

学习一门语言就是不断实践,python是目前用于数据分析最流行的语言,我最近买了本书<利用python进行数据分析>(Wes McKinney著),还去图书馆借了本<Python数据分析基础教程--NumPy学习指南>(第二版),准备将python数据分析工具的门给入了哈哈,闲话少说,直接切入正题. 首先<利用python进行数据分析>此书的译者强烈建议计算机环境的配置最好与书上的一致,所以我找了半天书上要求用的安装包 第一,安装32位的EPDFree(书上的版本就是3

利用 Python 进行数据分析(五)NumPy 基础:ndarray 索引和切片

概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为array[index1:index2],意思是从index1索引位置开始,到index2索引(不包括index2)位置结束的一段数组.例如: 当把一个值赋值为一个切片时,该值会作用于此数组片段里每一个元素,例如: 二维数组 二维数组的索引 当以一维数组的索引方式访问一个二维数组的时候,获取的元素不在

利用 Python 进行数据分析(三)使用 IPython 提高开发效率

一.IPython 简介 IPython 是一个交互式的 Python 解释器,而且它更加高效. 它和大多传统工作模式(编辑 -> 编译 -> 运行)不同的是, 它采用的工作模式是:执行 -> 探索 ,而大部分和数据分析相关的代码都含有探索式操作(比如试误法和迭代法),所以 IPython 能大大提高编码效率. IPython 发展到现在,它不仅仅只是一个加强版的 Python shell 了, 它集成了 GUI 控制台,这可以让你直接进行绘图操作:它还有一个基于 Web 的交互式笔记本

利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(2)

1.索引上的合并 有时候,DataFrame中的连接键位于其索引中.在这种情况下,你可以传入left_index = True或right_index = True(或两个都传)以说明索引应该被用作连接键: In [8]: left1 = pd.DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'], ...: 'value':range(6)}) In [9]: right1 = pd.DataFrame({'group_val':[3.5, 7]},

利用 Python 进行数据分析(四)NumPy 基础:ndarray 简单介绍

一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 二.ndarray 是什么 ndarray 是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点. ndarray 的一个特点是同构:即其中所有元素的类型必须相同. 三.ndarray 的创建 array() 函数 最简单的方法, 使用 NumPy 提供的

利用 Python 进行数据分析(二)尝试处理一份 JSON 数据并生成条形图

一.JSON 数据准备 首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况. 二.将 JSON 数据转换成 Python 字典 代码如下: 三.统计 tz 值分布情况,以“时区:总数”的形式生成统计结果 要想达到这一目的,需要先将 records 转换成 DataFrame,DataFrame 是 Pandas 里最重要的数据结构,它可以将数据以表格的形式表示:然后用 val