numpy&pandas笔记

原文 https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/

Why Numpy & Pandas?

  • 运算速度快:C 语言编写
  • 消耗资源少:矩阵运算

Numpy部分

Numpy 创建 array

np.array([1,2,3]) #list创建数组
np.array([-1,0,1,2],dtype=np.bool) #指定数据类型
np.zeros((1,2)) #参数应为元组 #全零数组
np.ones((1,2)) #全一数组
np.empty((1,2)) #全接近0的数组
np.arange(4)#[0,4) step=1
np.arange(1,4,2) #[1,4) step=2
np.linspace(1,4,2) #[1,4] num=50

Numpy array的属性

a=np.array([1,2,3])
a.ndim  # 1 # 维度
a.shape # (3,) #一维就长这个样子,二维及以上才是行列数 
a.size  # 3 # 元素个数

Numpy 基础运算

import numpy as np
a=np.array([10,20,30,40])   # array([10, 20, 30, 40])
b=np.arange(4)  # array([0, 1, 2, 3])

算术运算

c=a-b  # array([10, 19, 28, 37])
c=a+b   # array([10, 21, 32, 43])
c=a*b   # array([  0,  20,  60, 120])
c=b**2  # array([0, 1, 4, 9])

函数运算

c=10*np.sin(a)  
# array([-5.44021111,  9.12945251, -9.88031624,  7.4511316 ])

逻辑运算

print(b<3)  
# array([ True,  True,  True, False], dtype=bool)

矩阵相关运算

a=np.array([[1,1],[0,1]])
# array([[1, 1],
#       [0, 1]])
b=np.arange(4).reshape((2,2))
# array([[0, 1],
#       [2, 3]])
np.dot(a,b) #矩阵乘法 亦 a.dot(b)
# array([[2, 4],
#       [2, 3]])
np.transpose(a) #矩阵转置 亦 a.T
#array([[1, 0],
#      [1, 1]])

统计运算

a=np.arange(1,4)#array([1,2,3])
np.sum(a)    # 求和
np.min(a)    # 最小
np.max(a)    # 最大
np.mean(a)   # 平均
np.average(a)# 平均 可提供权重的平均
np.median(a) # 中位数
mp.cumsum(a) # 累加 [1,3,6]
np.diff(a)   # 前后差 [1,3,18]
np.sort(a)  #排序 默认以最后的axis为轴 
np.clip(a,b,c)# 裁剪 利用截断法使值域为[b,c]

按行列单元运算

a=np.arange(1,7).reshape(2,3)
np.sum(a,axis=1)#以行为单元进行sum [6,15]
np.min(a,axis=0)#以列为单元进行min [1,2,3]
np.max(a,axis=1)#以行为单元进行max [3,6]

索引运算

np.argmin(a) #最小元素所对应的索引
np.argmax(a) #最大元素所对应的索引
np.nonzero(a) #得到非零元素的行列坐标索引所分别构成的array所构成的元组

Numpy 访问

A=np.arange(3,15,1).reshape(3,4)
A[1][1]      # 8
A[1, 1]      # 8
A[1, 1:3]    # array([8, 9])
for row in A: #逐行访问
for column in A.T: #逐列访问
for item in A.flatten():#逐元素访问 #array
for item in A.flat:#逐元素访问 #迭代器

Numpy array 合并

a=np.arange(1,4)
b=np.arange(4,7)
np.vstack((a,b))#垂直合并#参数为元组
np.hstack((a,b))#水平合并#参数为元组
np.newaxis is None #True 可以用来智能扩展维度
np.concatenate((a,b),axis=0)#0水平合并,1垂直合并

Numpy array 分割

#不要纠结于横纵向,(3,4) axis=0 对应3 axis=1 对应4
A = np.arange(12).reshape((3, 4))
np.split(A,3,axis=0)#均匀分割 3部分 横向
np.split(A,4,axis=1)#均匀分割 4部分 纵向
np.array_split(A,3,axis=1)#尽量均匀分割 3部分 纵向 2+1+1
np.vsplit(A,3)#横向均匀分割 3部分 
np.hsplit(A,4)#纵向均匀分割 4部分

Numpy 真假拷贝

a=np.arange(4)
b=a # 起别名
c=a[:] # 假拷贝
d=a.copy() # 真拷贝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值