数据科学包1---numpy
文章目录
- 一、numpy
- 1.numpy作用
- 2.numpy$pandas安装
- 3.numpy属性
- 4.numpy创建array
- 5.numpy的基础运算
- 6.numpy索引
- 7.numpy array合并
- 8.numpy 的array分割
- 9.numpy的copy&decopy
一、numpy
1.numpy作用
相比于python中的字典、列表等计算快,并且使用C语言编写的,涉及矩阵的计算
2.numpy$pandas安装
在使用anaconda和pycharm时,将 Anconda 的解释器添加进 Pycharm 中,此时,即可直接导入numpy包、pandas包
3.numpy属性
# 导入模块
import numpy as np
# 把一个列表转换成矩阵(数组),array(数组)
array = np.array([[1,2,3],[2,3,4]])print(array)
'''[[1 2 3][2 3 4]]'''
# 几维
print('number of dim:',array.ndim) # number of dim: 2
# 行数和列数
print('shape:',array.shape) # shape: (2, 3) 2行3列
# 总共有多少元素
print('size:',array.size) # size: 6
4.numpy创建array
import numpy as np
a = np.array([2,23,4])
print(a) #[ 2 23 4]
# 每一个array可以定义type
# 整型
a = np.array([2,23,4],dtype=np.int)
print(a.dtype) # int32
a = np.array([2,23,4],dtype=np.int64)
print(a.dtype) # int64# 浮点型
a = np.array([2,23,4],dtype = np.float)
print(a.dtype) # float64
a = np.array([2,23,4],dtype = np.float32)
print(a.dtype) # float32# 生成矩阵
array = np.array([ [1,2,3],[2,3,4] ])
print(array)
'''[[1 2 3][2 3 4]]'''
# 生成全部为0的矩阵 (3,4)代表3行4列
a = np.zeros((3,4))
print(a)# 生成全部为1的矩阵
a= np.ones((3,4),dtype=np.int32)
print(a)# 生成全部为0的矩阵
a = np.empty((3,4))
print(a)# 生成一个有序的数列或矩阵,跟python中的range一样 包头不包尾
a = np.arange(10,20,2)
print(a) # [10 12 14 16 18]# 重新定义行和列
a = np.arange(12).reshape((3,4))
print(a)# 生成多少段从什么到什么的数列
a = np.linspace(1,10,5) # 生成5段从1到10的数列
print(a) # [ 1. 3.25 5.5 7.75 10. ]# linspace 和 reshape综合使用
a= np.linspace(1,10,6).reshape((2,3))
print(a)
5.numpy的基础运算
import numpy as np
a = np.array([10,20,30,40])
b = np.arange(4)
print(a,b)
# 减法
c = a-b
print(c) # [10 19 28 37]
# 加法
d = a+b
print(d) # [10 21 32 43]
# 平方
e = b**2
print(e) # [0 1 4 9]
# 乘法
f = a*b
print(f) # [ 0 20 60 120]
# 除法
g = b/a
print(g) # [0. 0.05 0.06666667 0.075 ]
# sin
h = 10*np.sin(a)
print(h) # [-5.44021111 9.12945251 -9.88031624 7.4511316 ]
# cos 、tan与sin同理# 判断 a、b里面的元素大于、小于、等于某些数
print(a > 20) # [False False True True]
print(b < 2) # [ True True False False]import numpy as np
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))
print(a)
print(b)# 逐个相乘
c = a*b
print(c)
# [[0 1]
# [0 3]]
# 矩阵的乘法
c_dot = np.dot(a,b)
# c_dot = a.dot(b)
print(c_dot)
# [[2 4]
# [2 3]]# 随机产生0-1之间的数字,需要给的参数是矩阵的行与列
d = np.random.random((2,3))
print(d)
# [[0.00438873 0.61744845 0.46120597]
# [0.94061284 0.88433724 0.59690626]]print(np.sum(d)) # 和3.504899492845882
print(np.max(d)) # 最大值 0.9406128391409265
print(np.min(d)) # 最小值 0.00438872886596442# 定义在行或列 axis=1行 axis=0列
print(np.sum(d,axis=1)) # [1.08304315 2.42185634]
print(np.max(d,axis=1)) # [0.61744845 0.94061284]
print(np.min(d,axis=1)) # [0.00438873 0.59690626]
import numpy as np
A = np.arange(2,14).reshape((3,4))
print(A)
# [[ 2 3 4 5]
# # [ 6 7 8 9]
# # [10 11 12 13]]# 最小值的索引
print(np.argmin(A)) # 0
# 最大值的索引
print(np.argmax(A)) # 11
# 平均值
print(np.mean(A)) # 7.5
# print(A.mean())
print(np.average(A)) # 7.5# 求中位数
print(np.median(A)) # 7.5# 逐渐累加
print(A)
print(np.cumsum(A))
# [[ 2 3 4 5]
# [ 6 7 8 9]
# [10 11 12 13]]
# [ 2 5 9 14 20 27 35 44 54 65 77 90]# 累差
print(A)
print(np.diff(A))
# [[ 2 3 4 5]
# [ 6 7 8 9]
# [10 11 12 13]]
# [[1 1 1] 第一个1是A中3-2,依此类推
# [1 1 1]
# [1 1 1]]# 输出非零的数 nonzero
print(A)
print(np.nonzero(A))
# [[ 2 3 4 5]
# [ 6 7 8 9]
# [10 11 12 13]]
# (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
# 分别表示第0行第0列是非零的数,依次类推# 逐行排序
B = np.arange(14,2,-1).reshape((3,4))
print(B)
print(np.sort(B))
# [[14 13 12 11]
# [10 9 8 7]
# [ 6 5 4 3]]
# [[11 12 13 14]
# [ 7 8 9 10]
# [ 3 4 5 6]]# 矩阵的转置 行变成列 列变成行
print(np.transpose(B))
print(B.T)
# [[14 10 6]
# [13 9 5]
# [12 8 4]
# [11 7 3]]# 矩阵的乘法(矩阵的转置与矩阵相乘)
print(B.T.dot(B))
# [[332 302 272 242]
# [302 275 248 221]
# [272 248 224 200]
# [242 221 200 179]]# clip 截取功能 指定新生成的矩阵的最小值和最大值
print(np.clip(B,5,9)) # 将A中小于5的数变成5,大于9的数变成9
# [[9 9 9 9]
# [9 9 8 7]
# [6 5 5 5]]
6.numpy索引
import numpy as np
A = np.arange(3,15).reshape((3,4))
print(A)
# [[ 3 4 5 6]
# [ 7 8 9 10]
# [11 12 13 14]]# 索引
print(A[1][1]) # 8
print(A[2][1]) # 12
# :代表所有数
print(A[2,:]) # 第二行的所有数[11 12 13 14]
print(A[:,1]) # 第一列的所有数[ 4 8 12]
print(A[1,1:2]) # 第一行第一列到第二列的所有数(包头不包尾)[8]# 迭代行
for row in A:print(row)
# [3 4 5 6]
# [ 7 8 9 10]
# [11 12 13 14]# 利用转置,迭代列
for column in A.T:print(column)
# [ 3 7 11]
# [ 4 8 12]
# [ 5 9 13]
# [ 6 10 14]# 迭代项目---将A转变成只有一行的项目 A.flat
print(A.flat) # A.flat返回一个迭代器对象<numpy.flatiter object at 0x00000173B35E6E10>
print(A.flatten()) # A.flatten返回一维数组的函数
for item in A.flat:print(item)
7.numpy array合并
import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])# 上下合并,参数为tup
C = np.vstack((A,B))
print(C)
# [[1 1 1]
# [2 2 2]]
print(A.shape,C.shape) # (3,) (2, 3)# 左右合并
D = np.hstack((A,B))
print(D)
# [1 1 1 2 2 2]
print(A.shape,D.shape) # (3,) (6,)# 功能:np.newaxis是用来给数组a增加维度的
# 格式:a[np.newaxis和:的组合],如a[:,np.newaxis],a[np.newaxis, np.newaxis, :]
# 详解:np.newaxis在[]中第几位,a.shape的第几维就变成1,a的原来的维度依次往后排。# 把一个横向的数列变成竖向的数列
print(A[:,np.newaxis])
# [[1]
# [1]
# [1]]
print(A[:,np.newaxis].shape) # (3, 1)print(A[np.newaxis,:]) # [[1 1 1]]
print(A[np.newaxis,:].shape) # (1, 3)A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
D = np.hstack((A,B))
print(D)
#[[1 2]
# [1 2]
# [1 2]]# 进行多个array的合并,axis参数来定义在哪个维度进行合并,axis=0列(纵向),axis=1行(横向)
C = np.concatenate((A,B,B,A),axis=1)
print(C)
# [[1 2 2 1]
# [1 2 2 1]
# [1 2 2 1]]
8.numpy 的array分割
import numpy as np
A = np.arange(12).reshape([3,4])
print(A)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]# 等量分割
# split 参数分别为ary,分割为多少层,哪个维度
print(np.split(A,2,axis=1))
# [array([[0, 1],
# [4, 5],
# [8, 9]]), array([[ 2, 3],
# [ 6, 7],
# [10, 11]])]print(np.split(A,3,axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]# 不等量的分割 array_split
print(np.array_split(A,3,axis=1))
# [array([[0, 1],
# [4, 5],
# [8, 9]]), array([[ 2],
# [ 6],
# [10]]), array([[ 3],
# [ 7],
# [11]])]# 纵向分割
print(np.vsplit(A,3))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]# 横向分割
print(np.hsplit(A,2))
# [array([[0, 1],
# [4, 5],
# [8, 9]]), array([[ 2, 3],
# [ 6, 7],
# [10, 11]])]
9.numpy的copy&decopy
import numpy as np
A = np.array([1,2,3,4])
print(A) # [1 2 3 4]# 赋值 两者相互关联
B = A
print(B) # [1 2 3 4]
A[0] = 10
print(A) # [10 2 3 4]
print(B) # [10 2 3 4]# copy&deepcopy 值复制过来,但两者互不关联
C = A.copy()
A[0] = 20
print(A) # [20 2 3 4]
print(C) # [10 2 3 4]
数据科学包1---numpy相关推荐
- python第二阶段(2)入门-数据科学包 pandas
数据科学包 pandas 导入pandas 创建对象 1 系列 2 日期序列(1) 3 日期序列(2) 4 Series的操作(1) 5 Series的操作(2) 合并,新增,连接和比较 1 连接 2 ...
- 机器学习---数据科学包-第2天
1 pandas快速入门(一) .Series()方法.Series类型由一组数据及与之相关的数据索引组成. import pandas as pd import numpy as np s = pd ...
- 数据科学包——Day2
数据科学包--Day2 利用Pandas, Numpy进行电影数据分析 准备工作 任务: 数据读取 数据合并 按性别查看各个电影的平均评分 男女评分差异最大的电影 活跃电影排行 前十大活跃电影--被评 ...
- 3.机器学习—数据科学包3.2pandas基础
pandas基础 一.pandas介绍 1.什么是pandas 2.pandas用途 3.课程内容 二.Ipython开发环境搭建 1.安装 2.新建运行环境 3.Ipython技巧 4.Ipytho ...
- python 数据科学 包_什么时候应该使用哪个Python数据科学软件包?
python 数据科学 包 Python is the most popular language for data science. Unfortunately, it can be tricky ...
- 常量数组 python_python数据科学系列:numpy入门详解教程
python数据科学基础库主要是三剑客:numpy,pandas以及matplotlib,每个库都集成了大量的方法接口,配合使用功能强大.平时虽然一直在用,也看过很多教程,但纸上得来终觉浅,还是需要自 ...
- 看看这些鲜为人知的宝藏Python数据科学包吧!
动态数据科学的这三剑客几乎无人不知无人不晓:Numpy,Pandas和Matplotlib.你可能已经熟悉这些包以及它们的运作方式. 还有其他很炫酷的包,你肯定也想试一试,例如Plotly,Seabo ...
- python数据科学系列:numpy入门详细教程
导读 python数据科学基础库主要是三剑客:numpy,pandas以及matplotlib,每个库都集成了大量的方法接口,配合使用功能强大.平时虽然一直在用,也看过很多教程,但纸上得来终觉浅,还是 ...
- python数据科学包第二天
文章目录 pandas入门 矩阵运算 重建索引 统计 数据合并 分组统计 数据整形 数据透视表 时间序列 类别数据 画图 数据读写 电影数据分析 准备工作 数据说明 利用 Pandas 分析电影评分数 ...
- python中画出距平垂线_3.机器学习—数据科学包3.3pandas操作
pandas操作 一.pandas索引 1.Series索引index 2.DateFrame行索引index和列索引columns 3.pandas预置索引的类 4.重复索引 4.1重复索引定义 4 ...
最新文章
- Qt中的QMainWindow
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
- LeetCode Algorithm 559. N 叉树的最大深度
- c++ primer 习题13.39自己做的答案
- crm 一级菜单排序,二级菜单选中并且展开,非菜单权限的归属,权限粒度控制到按钮级别...
- bba70_BBA的完整形式是什么?
- Emacs sql-mode 自动连接数据库 (当前仅支持MySQL)
- 官宣!DolphinScheduler 毕业成为 Apache 软件基金会顶级项目
- linux音频设备节点,Linux音频驱动之三:PCM设备的创建
- OV7670摄像头模块资料
- 大M法(Big M Method)
- 苹果软件测试的电池损耗准确,苹果官方维修如何查看苹果iPhone电池损耗和寿命...
- 使用telnet和ssh登录linux
- Google新一代操作系统Fuchsia详解
- OCSP在线证书状态协议内容描述
- matlab 绘制任意方向和位置的空间圆锥体
- pip命令卸载所有库
- WMS系统运用波次拣货原理
- JS 位数不够自动左补0
- 简单读!Mybatis源码(一)一条select的一生
热门文章
- Android 开机自启动
- mysql 中的 engine 存储引擎
- redis学习总结2
- Eclipse : Android requires compiler compliance level 5.0 or 6.0.
- php底层深度探索(3) ---Apache启动阶段分析 王泽宾
- FCKeditor在线编辑器的使用
- jQuery之美,第一次...
- React Native升级方法——升级到最新版本0.59
- Idea 里svn的导入使用
- 超大数据量操作 java程序优化[转载]