Python数据科学手册-Numpy入门

通过Python有效导入、存储和操作内存数据的技巧

数据来源:文档、图像、声音、数值等等,将所有的数据简单的看做数字数组 非常有助于 理解和处理数据
不管数据是何种形式,第一步都是 将这些数据转换成 数值形式 的可分析数据。

Numpy Numerical Python 的简称,

  • Numpy 数组和python内置的列表类型 非常相似,随着数组在维度上的变大,Numpy数组更高效
  • 导入numpy
import numpy as np 
  • 理解Python中的数据类型
    python易用之处在于动态输入,不需要声明变量类型,是动态推断的。可以将任何类型的数据指定给任何变量
    事实就是:Python变量不仅是他们的值,还包括了值得类型 的一些额外信息,
    1)python的整型不仅仅是一个整型
    标准的Python都是C语言编写的,每一个对象都是一个聪明的伪C语言结构体。该结构体包含其 值还有其他信息,
    比如 x = 10000, x是一个指针,指向一个C语言的复合结构体。
    查看 c语言 python安装目录\include\longintrepr.h
struct _longobject {     PyObject_VAR_HEAD     digit ob_digit[1]; }; 

扩展之后

struct _longobject {   long ob_refcnt;   PyTypeObject *ob_type;   size_t ob_size;   long ob_digit[1]; } 
  • ob_refcnt: 是一个引用计数,帮助python内存分配 回收
  • ob_type: 变量的类型编码
  • ob_size: 数据成员的大小
  • ob_digit: python变量表示的实际整型值

    因为python的动态类型特性,可以创建一个异构的列表
L = [ True, 2, 3.0, 4] [type(item) for item in L] 

输出:[bool, str, float, int]
灵活具有代价,列表中的每一项必须包含各自的类型信息,引用计数和其他信息。每一项都是一个完整的Python对象。
如果所有变量是同一类型,就有 冗余信息。

Python中固定类型数组

import array A = array.array('i', [0,1,2]) A 

输出:array('i', [0, 1, 2])

Numpy从Python列表创建数组

np.array([1,2,3,4,5]) 

输出:array([1, 2, 3, 4, 5])
必须是同一类型的数据。如果类型不匹配会自动向上转换,
明确设置数据类型,加参数dtype

np.array([1,2,3,4],dtype='float32') 

输出:array([1., 2., 3., 4.], dtype=float32)
设置多为数组

np.array([list(range(i, i+3)) for i in [2,4,6]]) 

输出:array([[2, 3, 4],
[4, 5, 6],
[6, 7, 8]])

Numpy从头创建数组