文章目录
标签(空格分隔):
numpy
python
《利用Python进行数据分析》
NumPy(数组和矢量计算)
- 快速多效的数组对象ndarray
- 线性代数运算、傅里叶变换、随机数生成
- 用于C、C++、Fortran代码集成到Python的工具
ndarray基础
类型 | 说明 |
---|---|
.ndim | dimension的缩写,维度 |
.shape | 返回(n,m)=n行m列 |
.size | 元素个数 |
.T | 转置矩阵 |
.A | 将矩阵转化为array数组类 |
函数 | 说明 |
---|---|
array() | 将输入数据转换为ndarray |
ones() | 根据指定形状和dtype创建一个全1数组 |
zeros() | 创建一个全0数组 |
empty() | 创建一个未初始化数组 |
arange() | 生成连续元素数组 |
copy() | 返回一个副本 |
reshape() | 重建.shape |
.unique() | 去重 |
data = [1,2,3,4,5,6]
x = numpy.array(data)
print data
print x
#[1, 2, 3, 4, 5, 6]
#[1 2 3 4 5 6]
x = np.array(['1','2','3'],dtype = np.string_)
y = x.astype(np.int32)
print x
print y
#['1' '2' '3']
#[1 2 3]
copy()示例
x = np.array([0,1,2,3,4,5,6,7,8,9,10])
y = x.copy()
print y
reshape()示例
a = np.arange(10)
b = a.reshape(5,2)
print b
矢量化计算
x = np.array([1,2,3])
print x*2
print x>2
print x*x
索引与切片
基本索引没区别,添加了布尔索引和花式索引
x = np.array([3,2,3,1,3,0])
# 布尔型数组的长度必须跟被索引的轴长度一致
y = np.array([True,False,True,False,True,False])
print x[y] # [3,3,3]
print x[y==False] # [2,1,0]
x = np.array([[0,1],[2,3],[4,5],[6,7],[8,9]])
print x,'\n'
print x[[0,1],:],'\n'
print x[:,[0]],'\n'
print x[[0,1]][:,[0,1]],'\n' # 打印01行的01列 [[1,2],[3,4]]
print x[[0,1],[0,1]],'\n' # [1,4] 打印x[0][0]和x[1][1]
用索引改变数组的值,不改变规模
#coding=utf-8
import numpy as np
arr3d = np.array([[
[1,2,3],
[4,5,6]
],
[
[7,8,9],
[10,11,12]
]])
print arr3d[0],'\n\n'
arr3d[0] = 4
print arr3d
基本数值函数
函数 | 说明 |
---|---|
.floor() | 小于等于该值的最大整数 |
.rint() | 将各元素四舍五入到最接近的整数 |
.where() 快速取值
where是三元表达式x if condition else y的矢量化版本
cond = [[True, False], [True, True]]
np.where(cond,
[[1, 2], [3, 4]],
[[9, 8], [7, 6]])
#array([[1, 8],[3, 4]]
# True时从x取值,False时从y取值
统计方法
方法 | 说明 |
---|---|
.sum() | 求和,当加入axis=1以后就是将一个矩阵的每一行向量相加 |
.mean() | 求算术平均数 |
.max().min() | 求最大最小 |
.argmax().argmin() | 求最大最小索引 |
.mean(a, axis=0) | 求均值,axis=0,计算每一列的均值,axis=1,计算行的 |
print x.mean(axis=1) # 对每一行的元素求平均
print x.mean(axis=0) # 对每一列的元素求平均
集合运算
方法 | 说明 |
---|---|
.intersect1d() | 求交集 |
.union1d() | 求并集 |
矩阵运算
import numpy.linalg 模块。线性代数(linear algebra)
函数 | 说明 |
---|---|
.diag() | 返回方阵的对角线元素,或将一维数值转换为方阵 |
.dot() | 矩阵乘法 |
.trace() | 计算对角线元素的和 |
.det() | 计算矩阵行列式 |
.eig() | 计算方阵特征值和特征向量 |
.inv() | 计算方阵的逆 |
.svd() | 计算奇异值分解(SVD) |
.cov() | 协方差矩阵,rowvar=1(默认)表示每一行代表一个变量 |
随机数生成
。。。
stack(),hstack(),vstack()
pandas
源于panel data计量经济学术语和Python data analysis(Python数据分析),它基于python构建。
DataFrame(源于R语言的data.frame对象)
面向列的二维表结构,含有行标和列标
matplotlib
figure
- 创建
fig = plt.figure()
#第二个参数为figsize,图的大小
- 显示
plt.show()
- 创建多个图一起显示
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
plt.show()
- 坐标轴不可见
plt.axis('off')
- 显示灰度图
plt.imshow(img, cmap ='gray')#黑底
plt.imshow(img, cmap = plt.cm.gray)#黑底
plt.imshow(img, cmap = plt.cm.gray_r)#白底
pyplot
散点图
简单示例
x = [1,2,3]
y = [4,5,6]
plt.scatter(x,y)
plt.show()
核心函数:scatter()
源自官方文档:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
- x,y:要画的点的位置
- s:点的大小,默认20
- c:点的颜色,默认蓝色
- marker:点的形状,默认为圆
- cmap:当c为浮点数时使用,。。。
- norm:当c为浮点数时使用,。。。
- vmin, vmax:当norm使用时使用,。。。
- alpha:不透明度,【0,1】
- linewidths:点的外边框,默认不开启
- verts:。。。
- edgecolors:外边框颜色
- 。。。
直方图
折线图
- 画图核心代码
plt.plot(x,y)
图例与助记
综合
SciPy
求微积分和矩阵
python原生
string.
string.strip()
去除首尾XX字符
str = " iloveyou "
print(str.strip())
##iloveyou
#IPython(Notebook)
xxx?
显示信息,叫做对象内省
快捷键
快捷键 | 功能 |
---|---|
tab | 补全 |
Ctrl-c | 中断 |
其他
python哲学
import python
''前面的字母
- r’'表示纯字符串,用在文件路径上
- u’'表示unicode编码
json(JavaScript Object Notation)
一种web数据格式
可以通过import json的方法来将JSON字符串转换成Python对象。
import json
path = '...txt'
records = [json.loads(line) for line in open(path)]#字典
records是二维数组,records[0]是一个字典