美文网首页
Numpy&Pandas

Numpy&Pandas

作者: SunJi_ | 来源:发表于2020-05-09 16:23 被阅读0次

视频教程:莫烦python

文字教程:Numpy中文手册 & Pandas中文手册

GitHub项目:

1. Numpy基本语法

Numpy是Python中科学计算的核心库。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。

1.1 创建Numpy数组
  • 使用Numpy内部功能函数
  • 从列表等其他Python的结构进行转换
  • 使用特殊的库函数
import numpy as np

#创建数组
np.array([[12,2,3],[45,6,7]])
np.ones((1,2))
np.zeros((1,2))
np.full((2,3),7)
np.eye(3)
np.random.random((3,4))
np.array([1,2], dtype = np.float64)
np.arange(12).reshape(3,4)
np.linspace(0,10,number=4)


#数组索引
a = np.array([[1,2,3,4],
              [3,4,5,6],
              [6,7,8,9]])
a[:2,1:3] #切片索引
a[5,6]    #整数索引
a[3,1:3]  #混合索引
a[a>3]    #布尔索引

#数组运算
np.add(x, y)
np.subtract(x, y)
np.mutiply(x, y)
np.divide(x, y)
np.sqrt(x)
np.dot(a, b)
np.sum(x, axis=1)
x.T
1.2. Broadcasting
  • 如果数组不具有相同的rank,则将较低等级数组的形状添加1,直到两个形状具有相同的长度。
  • 如果两个数组在维度上具有相同的大小,或者如果其中一个数组在该维度中的大小为1,则称这两个数组在维度上是兼容的。
  • 如果数组在所有维度上兼容,则可以一起广播。
  • 广播之后,每个数组的行为就好像它的形状等于两个输入数组的形状的元素最大值。
  • 在一个数组的大小为1且另一个数组的大小大于1的任何维度中,第一个数组的行为就像沿着该维度复制一样
#矩阵每行添加一个常向量
x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
v = np.array([1,0,1])

y = np.empty_like(x)
for i in range(4):
    y[i,:] = x[i,:] + v
print(y)
#or
vv = np.tile(v, (4,1))
y = x + vv
print(y)
#or
y = x + v
print(y)
1.3. Scipy部分操作
#图像处理
from scipy.misc import imread, imsave, imresize
photo = imread('ins.jpg')
rephoto = photo * [1,0.9,08]
imresize('rephoto', (300, 300)
imsave('ins.jpg', rephoto)
#计算间距
from scipy.spatial.distance import pdist, squareform
d = squareform(pdist(x, 'euclidean'))
1.4. Matplotlib绘图部分
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.xlabel('xxx')
plt.ylabel('xxx')
plt.title('xxx')
plt.legend('xxx', 'xxx')
plt.subplot(height, width, number)
plt.show()
1.5 矩阵和向量
#求解方程组 Ax=b
A = np.array([[2,2,1],[3,4,5],[7,8,9]])
b = np.transpose(np.array([1,2,3]))
x = np.linalg.solve(A,b)

#求解多元线性回归 (XT X) β = XT Y
XT = np.transpose(X)
XT X = np.dot(XT,X)
XT Y = np.dot(XT,Y)
β = np.linalg.solve(XT Y,XT X)
1.6 数据分析练习
#在不影响原始数组的情况下替换满足条件的元素项
a = np.arange(10)
b = np.where(a % 2 == 1, -1, a)

#数组垂直叠加
c = np.concatenate([a,b],axis =0)
c = np.vstack([a.b])
c = np.r_[a,b]
#数组水平叠加
c = np.concatenate([a,b],axis=1)
c = np.hstack([a.b])
c = np.c_[a,b]

#获取公共项
np.intersect1d(a,b)
#从一个数组中删去另一个数组值
np.setdiff1d(a,b)
#获取两个数组公共项的位置
np.where(a==b)

#提取满足条件的元素
index = np.where((a>=5)&(a<=10))
print(a[index])

#交换数组的列
a = a[:,[1,0,2]]
#交换数组的行
a = a[[1,0,2],:]]

#反转数组的行
a = a[::-1]
#反转数组的列
a = a[:,::-1]

一些函数:

np.vectorize()

待更新~

相关文章

网友评论

      本文标题:Numpy&Pandas

      本文链接:https://www.haomeiwen.com/subject/rgbaghtx.html