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]])