数据科学学习
环境
python3.8 ipython
而外包:
numpy
pandas
scipy
scikit-learn
scikit-image
pillow
matplotlib
seaborn
jupyter
notebook
line_profiler
memory_profiler
numexpr
pandas-datareader
netcdf4
ipython使用如下:
In [7]: import numpy
In [8]: numpy.__version__
Out[8]: '1.18.1'
- python 的基本类型
首先理解标准的Python实现是用C编写的
所以python的动态语言基本类型其实是对应c中的数据结构
例如x =10000,x不仅是“原始”整数。它实际上是指向包含多个值的复合C结构的指针。查看Python 3.4源代码,我们发现整数(长型)类型定义实际上看起来像这样(一旦扩展了C宏):
struct _longobject {
long ob_refcnt;
PyTypeObject *ob_type;
size_t ob_size;
long ob_digit[1];
};
Python 3.4中的单个整数实际上包含四个部分:
ob_refcnt,一个参考计数,可帮助Python静默处理内存分配和释放
ob_type,它编码变量的类型
ob_size,它指定以下数据成员的大小
ob_digit,包含我们期望Python变量表示的实际整数值。
这意味着与使用C之类的编译语言中的整数相比,在Python中存储整数会产生一些开销,如下图所示:
![](https://img.haomeiwen.com/i7779493/8791b0611c6cffcd.png)
这里PyObject_HEAD是结构的一部分,包含引用计数,类型代码和前面提到的其他部分
注意区别:C整数本质上是内存中某个位置的标签,其字节编码一个整数值。 Python整数是指向内存中包含所有Python对象信息的位置的指针,包括包含整数值的字节。 Python整数结构中的这些额外信息使Python能够如此自由,动态地编码。但是,Python类型中的所有这些附加信息都是有代价的,在结合了许多这些对象的结构中,这尤其明显
网友评论