numpy&pandas 学习笔记1-numpy

numpy和pandas用途

主要同于数据分析,处理。numpy基于C语言,因此速度特别快,pandas基于numpy,是numpy的升级版。
主要用矩阵进行处理。

Anaconda里面直接就带上了这些常用包,省去了安装的麻烦

测试

import numpy as np 

array = np.array([[1,2,3]
                 ,[2,3,4]])

print(array)
#维度
print('number of dim:',array.ndim)
#几行几列
print('shape:',array.shape)
#总共的元素数
print('size:',array.size)

在这里插入图片描述

一、基础运算

1. 创建矩阵

a = np.array([[2,3,4],
              [5,2,65]])
#生成一个3×4的空矩阵
b = np.zeros((3,4))
#生成一个3×4的单位矩阵
c = np.ones((3,4))
#生成一个3×4的单位矩阵
c = np.ones((3,4))
#生成一个矩阵,不进行初始化
d = np.empty((3,4))
#生成随机值
e = np.arange(10,20,2)
print(a)
print(b)
print(c)

在这里插入图片描述
2.基础运算 (加减乘除)

#简单计算
a = np.array([3,4,5])
b = np.array(4)

print(a)
print(b)
print(a-b)
print(a+b)
print(a*b)
print(a/b)

在这里插入图片描述

3.生成随机矩阵

a = np.random.random((2,4))
print(a)

在这里插入图片描述
4.数值处理(求和,最大,最小值等)

a = np.random.random((2,4))
print(a)
#axis决定进行处理的维度,axis = 0,在每列中进行查找处理,axis = 1为在行中
#print(np.sum(a,axis = 1))
print(np.sum(a))
print(np.min(a))
print(np.max(a))

在这里插入图片描述
5.寻找最大最小值的索引
返回最小/大的数所在位置的索引

a = np.arange(2,14).reshape(3,4)

print(np.argmin(a))
print(np.argmax(a))

在这里插入图片描述

6.常用基本操作

a = np.arange(2,14).reshape(3,4)
#平均值
print(np.mean(a))
print(a.mean())
print(np.average(a))
#中位数
print(np.median(a))
#逐项累加
print(np.cumsum(a))
#逐项累差
print(np.diff(a))
#分别对应输出对应值所在的行与列 
print(np.nonzero(a))
#排序
print(np.sort(a))
#转置矩阵
print(a.T)
#二值化滤波
print(np.clip(a,5,9))
#矩阵求逆
a = np.array([[1, 2], [-1, -3]])
print(np.linalg.inv(a))

在这里插入图片描述

7.内积,外积
内积(点积):对应位置元素相乘,然后合并相加,最后结果是标量
在这里插入图片描述
在这里插入图片描述
内积二维物理意义:短边在长边上的投影
在这里插入图片描述
外积(叉乘):
二维:
a × b = [a1,a2] × [b1,b] = a2b1 - a1b2
a × b = |a| * |b| sinα
物理意义: 0<α<Π/2 : a ,b两个向量张成的平行四边形的面积
α > Π/2 : 对应值取反
在这里插入图片描述
三维:所得到的是一个向量而不是标量
在这里插入图片描述
物理意义:a和b向量张成的平面的法向量

u = np.array([1,2,3])
v = np.array([4,5,6])
#内积
print("内积:",np.dot(u,v))
#外积
print("外积:",np.cross(u,v))
#普通直接相乘
print("直接相乘:",u*v)

在这里插入图片描述

二、 索引

a = np.arange(3,15).reshape(3,4)
print(a)
#索引方式类似于多维数组 
print(a[2])
#print(a[2,2])
print(a[2][2])
#输出第二列的所有数,可用 : 代替 
print(a[:,1])
#对每一行进行迭代输出
for row in a:
    print(row)
#对每一列进行迭代输出 
for column in a.T:
    print(column)
#迭代输出每一项
for item in a.flat:
    print(item)

在这里插入图片描述

三、numpy array合并

a = np.array([1,1,1])
b = np.array([2,2,2])
#进行上下合并 
print(np.vstack((a,b))) 
#进行左右合并(还是一个序列)
print(np.hstack((a,b)))
#在行上增加一个维度
print(a[np.newaxis,:])
#在列上增加一个维度
print(a[:,np.newaxis])

#进行多个序列的合并(需先给序列增加一个维度) 
a =  a[np.newaxis,:]
b =  b[np.newaxis,:]
print(np.concatenate((a,b,b,a),axis = 0))
print(np.concatenate((a,b,b,a),axis = 1))

在这里插入图片描述

四、numpy array分割

a = np.arange(12).reshape(3,4)
print(a)

#均等分割
#按列将其分成两块竖着的两块 
print(np.split(a,2,axis = 1))
#按行将其分成横着的三块
print(np.split(a,3,axis = 0))

#不均等分割
print(np.array_split(a,3,axis = 1))
#比较简便的方式(均等分割)
print(np.vsplit(a,3))
print(np.hsplit(a, 2))

在这里插入图片描述

五、numpy copy&deep copy(浅复制和深复制)

a = np.arange(4)
#a,b,c,d关联 ,改变其中任意一个,其他都会变化
b = a
c = a
d = b
a[0] = 12
print(b)
print(b is a) 
print(d is a)
#只把值赋给b,a与b不关联,改变a,b不会变化
b = a.copy()
a[1] = 45
print(a)
print(b)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值