01. Python 工具
02. Python 基础
03. Numpy
- Numpy 简介
- Matplotlib 基础
- Numpy 数组及其索引
- 数组类型
- 数组方法
- 数组排序
- 数组形状
- 对角线
- 数组与字符串的转换
- 数组属性方法总结
- 生成数组的函数
- 矩阵
- 一般函数
- 向量化函数
- 二元运算
- ufunc 对象
- choose 函数实现条件筛选
- 数组广播机制
- 数组读写
- 结构化数组
- 记录数组
- 内存映射
- 从 Matlab 到 Numpy
04. Scipy
05. Python 进阶
- sys 模块简介
- 与操作系统进行交互:os 模块
- CSV 文件和 csv 模块
- 正则表达式和 re 模块
- datetime 模块
- SQL 数据库
- 对象关系映射
- 函数进阶:参数传递,高阶函数,lambda 匿名函数,global 变量,递归
- 迭代器
- 生成器
- with 语句和上下文管理器
- 修饰符
- 修饰符的使用
- operator, functools, itertools, toolz, fn, funcy 模块
- 作用域
- 动态编译
06. Matplotlib
- Pyplot 教程
- 使用 style 来配置 pyplot 风格
- 处理文本(基础)
- 处理文本(数学表达式)
- 图像基础
- 注释
- 标签
- figures, subplots, axes 和 ticks 对象
- 不要迷信默认设置
- 各种绘图实例
07. 使用其他语言进行扩展
- 简介
- Python 扩展模块
- Cython:Cython 基础,将源代码转换成扩展模块
- Cython:Cython 语法,调用其他C库
- Cython:class 和 cdef class,使用 C++
- Cython:Typed memoryviews
- 生成编译注释
- ctypes
08. 面向对象编程
09. Theano 基础
- Theano 简介及其安装
- Theano 基础
- Theano 在 Windows 上的配置
- Theano 符号图结构
- Theano 配置和编译模式
- Theano 条件语句
- Theano 循环:scan(详解)
- Theano 实例:线性回归
- Theano 实例:Logistic 回归
- Theano 实例:Softmax 回归
- Theano 实例:人工神经网络
- Theano 随机数流变量
- Theano 实例:更复杂的网络
- Theano 实例:卷积神经网络
- Theano tensor 模块:基础
- Theano tensor 模块:索引
- Theano tensor 模块:操作符和逐元素操作
- Theano tensor 模块:nnet 子模块
- Theano tensor 模块:conv 子模块
10. 有趣的第三方模块
11. 有用的工具
- pprint 模块:打印 Python 对象
- pickle, cPickle 模块:序列化 Python 对象
- json 模块:处理 JSON 数据
- glob 模块:文件模式匹配
- shutil 模块:高级文件操作
- gzip, zipfile, tarfile 模块:处理压缩文件
- logging 模块:记录日志
- string 模块:字符串处理
- collections 模块:更多数据结构
- requests 模块:HTTP for Human
12. Pandas
数组属性方法总结
作用 | |
---|---|
1 | 基本属性 |
a.dtype | 数组元素类型 float32,uint8,... |
a.shape | 数组形状 (m,n,o,...) |
a.size | 数组元素数 |
a.itemsize | 每个元素占字节数 |
a.nbytes | 所有元素占的字节 |
a.ndim | 数组维度 |
2 | 形状相关 |
a.flat | 所有元素的迭代器 |
a.flatten() | 返回一个1维数组的复制 |
a.ravel() | 返回一个1维数组,高效 |
a.resize(new_size) | 改变形状 |
a.swapaxes(axis1, axis2) | 交换两个维度的位置 |
a.transpose(*axex) | 交换所有维度的位置 |
a.T | 转置,a.transpose() |
a.squeeze() | 去除所有长度为1的维度 |
3 | 填充复制 |
a.copy() | 返回数组的一个复制 |
a.fill(value) | 将数组的元组设置为特定值 |
4 | 转化 |
a.tolist() | 将数组转化为列表 |
a.tostring() | 转换为字符串 |
a.astype(dtype) | 转化为指定类型 |
a.byteswap(False) | 转换大小字节序 |
a.view(type_or_dtype) | 生成一个使用相同内存,但使用不同的表示方法的数组 |
5 | 复数 |
a.imag | 虚部 |
a.real | 实部 |
a.conjugate() | 复共轭 |
a.conj() | 复共轭(缩写) |
6 | 保存 |
a.dump(file) | 将二进制数据存在file中 |
a.dump() | 将二进制数据表示成字符串 |
a.tofile(fid, sep="",format="%s") | 格式化ASCⅡ码写入文件 |
7 | 查找排序 |
a.nonzero() | 返回所有非零元素的索引 |
a.sort(axis=-1) | 沿某个轴排序 |
a.argsort(axis=-1) | 沿某个轴,返回按排序的索引 |
a.searchsorted(b) | 返回将b中元素插入a后能保持有序的索引值 |
8 | 元素数学操作 |
a.clip(low, high) | 将数值限制在一定范围内 |
a.round(decimals=0) | 近似到指定精度 |
a.cumsum(axis=None) | 累加和 |
a.cumprod(axis=None) | 累乘积 |
9 | 约简操作 |
a.sum(axis=None) | 求和 |
a.prod(axis=None) | 求积 |
a.min(axis=None) | 最小值 |
a.max(axis=None) | 最大值 |
a.argmin(axis=None) | 最小值索引 |
a.argmax(axis=None) | 最大值索引 |
a.ptp(axis=None) | 最大值减最小值 |
a.mean(axis=None) | 平均值 |
a.std(axis=None) | 标准差 |
a.var(axis=None) | 方差 |
a.any(axis=None) | 只要有一个不为0,返回真,逻辑或 |
a.all(axis=None) | 所有都不为0,返回真,逻辑与 |
In [1]:
from numpy import *
基本属性
In [2]:
a = array([[0, 1, 2, 3], [4, 5, 6, 7]])
a
Out[2]:
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
数组元素属性:
In [3]:
a.dtype
Out[3]:
dtype('int32')
形状:
In [4]:
a.shape
Out[4]:
(2L, 4L)
元素数目:
In [5]:
a.size
Out[5]:
8
元素占字节大小:
In [6]:
a.itemsize
Out[6]:
4
所有元素所占字节:
In [7]:
a.nbytes
Out[7]:
32
数据维度:
In [8]:
a.ndim
Out[8]:
2
形状相关
In [9]:
for row in a:
print row
[0 1 2 3]
[4 5 6 7]
所有元素的迭代器:
In [10]:
for elt in a.flat:
print elt
0
1
2
3
4
5
6
7
所有元素组成的一维数组,按照行排列:
In [11]:
a.flatten()
Out[11]:
array([0, 1, 2, 3, 4, 5, 6, 7])
In [12]:
a.ravel()
Out[12]:
array([0, 1, 2, 3, 4, 5, 6, 7])
重新改变形状:
In [13]:
a.resize((4,2))
a
Out[13]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
交换这两个轴的顺序:
In [14]:
a.swapaxes(0,1)
Out[14]:
array([[0, 2, 4, 6],
[1, 3, 5, 7]])
转置:
In [15]:
a.transpose()
Out[15]:
array([[0, 2, 4, 6],
[1, 3, 5, 7]])
转置:
In [16]:
a.T
Out[16]:
array([[0, 2, 4, 6],
[1, 3, 5, 7]])
In [17]:
a2 = array([1,2,3])
a2.shape
Out[17]:
(3L,)
In [18]:
a2.resize((1,3,1))
a2.shape
Out[18]:
(1L, 3L, 1L)
去除长度为1的维度:
In [19]:
a2 = a2.squeeze()
a2.shape
Out[19]:
(3L,)
填充复制
复制:
In [20]:
b = a.copy()
b
Out[20]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
复制不影响原来的数组:
In [21]:
b[0][0] = -1
b # First value changed
Out[21]:
array([[-1, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7]])
In [22]:
a # original not changed because b is a copy
Out[22]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
填充:
In [23]:
b.fill(4)
b
Out[23]:
array([[4, 4],
[4, 4],
[4, 4],
[4, 4]])
转化
转化为列表:
In [24]:
a.tolist()
Out[24]:
[[0, 1], [2, 3], [4, 5], [6, 7]]
转化为字符串:
In [25]:
a.tostring()
Out[25]:
'\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00'
改变数组元素类型:
In [26]:
a.astype(float)
Out[26]:
array([[ 0., 1.],
[ 2., 3.],
[ 4., 5.],
[ 6., 7.]])
In [27]:
b = a.copy()
b.byteswap(False)
Out[27]:
array([[ 0, 16777216],
[ 33554432, 50331648],
[ 67108864, 83886080],
[100663296, 117440512]])
将它看成16位整数:
In [28]:
a.view(dtype=int16)
Out[28]:
array([[0, 0, 1, 0],
[2, 0, 3, 0],
[4, 0, 5, 0],
[6, 0, 7, 0]], dtype=int16)
复数
实部:
In [29]:
b = array([1+2j, 3+4j, 5+6j])
b.real
Out[29]:
array([ 1., 3., 5.])
虚部:
In [30]:
b.imag
Out[30]:
array([ 2., 4., 6.])
共轭:
In [31]:
b.conj()
Out[31]:
array([ 1.-2.j, 3.-4.j, 5.-6.j])
In [32]:
b.conjugate()
Out[32]:
array([ 1.-2.j, 3.-4.j, 5.-6.j])
保存
保存成文本:
In [33]:
a.dump("file.txt")
字符串:
In [34]:
a.dumps()
Out[34]:
'\x80\x02cnumpy.core.multiarray\n_reconstruct\nq\x01cnumpy\nndarray\nq\x02K\x00\x85U\x01b\x87Rq\x03(K\x01\x8a\x01\x04\x8a\x01\x02\x86cnumpy\ndtype\nq\x04U\x02i4K\x00K\x01\x87Rq\x05(K\x03U\x01<NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tb\x89U \x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00tb.'
写入文件:
In [35]:
a.tofile('foo.csv', sep=',', format="%s")
查找排序
非零元素的索引:
In [36]:
a.nonzero()
Out[36]:
(array([0, 1, 1, 2, 2, 3, 3], dtype=int64),
array([1, 0, 1, 0, 1, 0, 1], dtype=int64))
排序:
In [37]:
b = array([3,2,7,4,1])
b.sort()
b
Out[37]:
array([1, 2, 3, 4, 7])
排序的索引位置:
In [38]:
b = array([2,3,1])
b.argsort(axis=-1)
Out[38]:
array([2, 0, 1], dtype=int64)
将 b
插入 a
中的索引,使得 a
保持有序:
In [39]:
a = array([1,3,4,6])
b = array([0,2,5])
a.searchsorted(b)
Out[39]:
array([0, 1, 3], dtype=int64)
元素数学操作
限制在一定范围:
In [40]:
a = array([[4,1,3],[2,1,5]])
a.clip(0,2)
Out[40]:
array([[2, 1, 2],
[2, 1, 2]])
近似:
In [41]:
a = array([1.344, 2.449, 2.558])
a.round(decimals=2)
Out[41]:
array([ 1.34, 2.45, 2.56])
累加和:
In [42]:
a = array([[4,1,3],[2,1,5]])
a.cumsum(axis=None)
Out[42]:
array([ 4, 5, 8, 10, 11, 16])
累乘积:
In [43]:
a.cumprod(axis=None)
Out[43]:
array([ 4, 4, 12, 24, 24, 120])
约简操作
求和:
In [44]:
a = array([[4,1,3],[2,1,5]])
a.sum(axis=None)
Out[44]:
16
求积:
In [45]:
a.prod(axis=None)
Out[45]:
120
最小值:
In [46]:
a.min(axis=None)
Out[46]:
1
最大值:
In [47]:
a.max(axis=None)
Out[47]:
5
最小值索引:
In [48]:
a.argmin(axis=None)
Out[48]:
1
最大值索引:
In [49]:
a.argmax(axis=None)
Out[49]:
5
最大间隔:
In [50]:
a.ptp(axis=None)
Out[50]:
4
均值:
In [51]:
a.mean(axis=None)
Out[51]:
2.6666666666666665
标准差:
In [52]:
a.std(axis=None)
Out[52]:
1.49071198499986
方差:
In [53]:
a.var(axis=None)
Out[53]:
2.2222222222222228
是否有非零元素:
In [54]:
a.any(axis=None)
Out[54]:
True
是否全部非零:
In [55]:
a.all()
Out[55]:
True
删除生成的文件:
In [56]:
import os
os.remove('foo.csv')
os.remove('file.txt')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论