【机器学习-数据科学】第一节:numpypandas

numpy&pandas

    • 安装numpy&pandas
    • array创建
    • numpy的基础运算
    • numpy的索引
    • numpy的 array 合并
    • numpy的 array分割
    • numpy的 copy & deep copy

安装numpy&pandas

在这里插入图片描述
在这里插入图片描述

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 2 3][2 3 4]]
number of dim: 2
shape: (2, 3)
size: 6Process finished with exit code 0

array创建

import numpy as np
a=np.array([2,23,4],dtype=np.int)  #创建时使用列表 并且确定类型
print(a.dtype)b=np.zeros((3,4))
print(b)c=np.ones((3,4),dtype=np.int)
print(c)d=np.empty((3,4))
print(d)e=np.arange(10,100,10)
print(e)f=np.arange(12).reshape((3,4))
print(f)g=np.linspace(10,100,10)
print(g)h=np.linspace(10,100,10).reshape((2,5))
print(h)
int32
[[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]
[[1 1 1 1][1 1 1 1][1 1 1 1]]
[[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]
[10 20 30 40 50 60 70 80 90]
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
[ 10.  20.  30.  40.  50.  60.  70.  80.  90. 100.]
[[ 10.  20.  30.  40.  50.][ 60.  70.  80.  90. 100.]]Process finished with exit code 0

numpy的基础运算

1.加减乘除 求和

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
c=a-b    #加减
print(a,b,c)d=a**2  #平方d
e=10*np.sin(a) #三角函数
print(d,e)print(b)
print(b<3) #哪些值小于3#矩阵运算
f=np.array([[10,20],[30,40]])
g=np.arange(4).reshape((2,2))
print(f)
print(g)
#
h=f*g
print('逐个相乘结果:\n',h)h_dot=np.dot(f,g)
h_dot2=f.dot(g)
print('矩阵相乘结果:\n',h_dot)
print('矩阵相乘结果2:\n',h_dot2)
[10 20 30 40] [0 1 2 3] [10 19 28 37]
[ 100  400  900 1600] [-5.44021111  9.12945251 -9.88031624  7.4511316 ]
[0 1 2 3]
[ True  True  True False]
[[10 20][30 40]]
[[0 1][2 3]]
逐个相乘结果:[[  0  20][ 60 120]]
矩阵相乘结果:[[ 40  70][ 80 150]]
矩阵相乘结果2[[ 40  70][ 80 150]]Process finished with exit code 0
#求和 最大最小值
import numpy as np
a=np.random.random((2,4))
print(a)
print(np.sum(a))
print(np.sum(a,axis=1))  #axis=1 是在列中求和,axis=0是在行中求和
print(np.min(a))
print(np.min(a,axis=0))
print(np.max(a))
[[0.85663257 0.60903081 0.32588806 0.17383597][0.82810401 0.86504537 0.35610231 0.95728784]]
4.9719269475592105
[1.96538742 3.00653953]
0.17383597454524058
[0.82810401 0.60903081 0.32588806 0.17383597]
0.9572878423829763Process finished with exit code 0

2.其他运算

import numpy as np
A =np.arange(2,14).reshape((3,4))
print(A)
#最小/大值的索引
print(np.argmin(A))
print(np.argmax(A))#平均值
print(np.mean(A))
print(A.mean())
print(np.average(A))
#print(A.average()) #这个版本不适用
#中位数
print('中位数:',np.median(A),"\n")#累计相加
print(A)
print('累计相加:\n',np.cumsum(A),'\n')
#累差
print(A)
print('累差:\n',np.diff(A),'\n')print('行列:\n',np.nonzero(A),'\n')A=np.arange(14,2,-1).reshape((3,4))
print(A)
print('排序:\n',np.sort(A),'\n')   #逐行排序print(A)
print('转置')
print(np.transpose(A))
print(A.T)
print((A.T).dot(A))print(A)
print('截取给定的数')
print('给定小于5的数等于5,大于9的数等于9\n',np.clip(A,5,9))print('axis=1 是在列中求和,axis=0是在行中求和')
print('求行中的平均值:')
print(np.mean(A,axis=0))
[[ 2  3  4  5][ 6  7  8  9][10 11 12 13]]
0
11
7.5
7.5
7.5
中位数: 7.5 [[ 2  3  4  5][ 6  7  8  9][10 11 12 13]]
累计相加:[ 2  5  9 14 20 27 35 44 54 65 77 90] [[ 2  3  4  5][ 6  7  8  9][10 11 12 13]]
累差:[[1 1 1][1 1 1][1 1 1]] 行列:(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)) [[14 13 12 11][10  9  8  7][ 6  5  4  3]]
排序:[[11 12 13 14][ 7  8  9 10][ 3  4  5  6]] [[14 13 12 11][10  9  8  7][ 6  5  4  3]]
转置
[[14 10  6][13  9  5][12  8  4][11  7  3]]
[[14 10  6][13  9  5][12  8  4][11  7  3]]
[[332 302 272 242][302 275 248 221][272 248 224 200][242 221 200 179]]
[[14 13 12 11][10  9  8  7][ 6  5  4  3]]
截取给定的数
给定小于5的数等于5,大于9的数等于9[[9 9 9 9][9 9 8 7][6 5 5 5]]
axis=1 是在列中求和,axis=0是在行中求和
求行中的平均值:
[10.  9.  8.  7.]

numpy的索引

import numpy as np
A=np.arange(3,15).reshape((3,4))
print(A,"\n")
print(A[2])
print(A[2][2])
print(A[2,2])  #与上面同样功能
print(A[2,:])  #第二行所有数
print(A[:,1])  #第一列所有数
print('A:\n',A)print('第二行,第一列到第二列:')
print(A[2,1:3],'\n')  #第二行,第一列到第二列print(A)
print('打印每一行:')
for row in A:print(row)
print('打印每一列:')
for column in A.T:print(column)print('打印出每个项目:')
print(A.flatten())  #返回一个array,flat是一个迭代器
for item in A.flat:print(item)
[[ 3  4  5  6][ 7  8  9 10][11 12 13 14]] [11 12 13 14]
13
13
[11 12 13 14]
[ 4  8 12]
A:[[ 3  4  5  6][ 7  8  9 10][11 12 13 14]]
第二行,第一列到第二列:
[12 13] [[ 3  4  5  6][ 7  8  9 10][11 12 13 14]]
打印每一行:
[3 4 5 6]
[ 7  8  9 10]
[11 12 13 14]
打印每一列:
[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
[ 6 10 14]
打印出每个项目:
[ 3  4  5  6  7  8  9 10 11 12 13 14]
3
4
5
6
7
8
9
10
11
12
13
14Process finished with exit code 0

numpy的 array 合并

import numpy as np
A=np.array([1,1,1])
B=np.array([2,2,2])C=np.vstack((A,B)) #vertical stack
D=np.hstack((A,B))  #horizontal stack
print(C)
print(D)
print(A.shape,C.shape,D.shape)
print(A.T)
print(A.T.shape) #么有改成列,要怎么改成列呢?看下面# print(A[np.newaxis,:]) #在行加一个维度
# print(A[:,np.newaxis]) #在列加一个维度
print(A[:,np.newaxis]) #在列加一个维度
print(B[:,np.newaxis])C= np.concatenate((A,B,B,A),axis=0)
print(C)
[[1 1 1][2 2 2]]
[1 1 1 2 2 2]
(3,) (2, 3) (6,)
[1 1 1]
(3,)
[[1][1][1]]
[[2][2][2]]
[1 1 1 2 2 2 2 2 2 1 1 1]Process finished with exit code 0

numpy的 array分割

import numpy as npA =np.arange(12).reshape((3,4))
print(A)print(np.split(A,3,axis=0))
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]Process finished with exit code 0

但是机器学习里经常需要实现不等量分割:

import numpy as npA =np.arange(12).reshape((3,4))
print(A)print(np.array_split(A,3,axis=1))
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
[array([[0, 1],[4, 5],[8, 9]]), array([[ 2],[ 6],[10]]), array([[ 3],[ 7],[11]])]Process finished with exit code 0

另外一种用法:


import numpy as npA =np.arange(12).reshape((3,4))
print(A)#print(np.array_split(A,3,axis=1))print(np.vsplit(A,3))
print(np.hsplit(A,2))
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
[array([[0, 1],[4, 5],[8, 9]]), array([[ 2,  3],[ 6,  7],[10, 11]])]Process finished with exit code 0

numpy的 copy & deep copy

import numpy as np
a=np.arange(4)
print(a)
b=a
c=a
d=b
a[0]=11
print(a)
print(b is a)
print(b,c,d)
#改变其中任意一个 都会改变
d[1:3]=[22,23]
print(b,c,d)#deep copy
b=a.copy()  #把a的值赋给b,但是不关联
a[3]=45
print(a,b)
print(b is a)
[0 1 2 3]
[11  1  2  3]
True
[11  1  2  3] [11  1  2  3] [11  1  2  3]
[11 22 23  3] [11 22 23  3] [11 22 23  3]
[11 22 23 45] [11 22 23  3]
FalseProcess finished with exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习-数据科学】第二节:ipython开发环境搭建以及pandas快速入门

ipython开发环境搭建以及pandas快速入门0.开发环境搭建技巧网页版ipython&#xff1a;ipython notebooknumpy1.pandas 快速入门一导入创建对象2. pandas 快速入门二空数据处理apply的用法count和mode函数数据合并3. pandas 快速入门三数据整形数据透视时间序列数据可视化数据载…

pytorch图像和张量的相互转换_Day107:Pytorch张量类型的构建与相互转换

张量的作用Pytorch的数据类型为各式各样的Tensor&#xff0c;Tensor可以理解为高维矩阵(与Numpy中的Array类似)通过使用Type函数可以查看变量类型。一CPU张量类型Pytorch中的tensor包括七种CPU张量类型和八种GPU张量类型&#xff0c;这里我们就只讲解一下CPU中的&#xff0c;GP…

漂亮的html页面源码_爬虫数据分析之html

1、 htmlhtml 不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;是制作网页所必须的&#xff0c;你在浏览器里看到的每一个页面&#xff0c;不论简单还是复杂&#xff0c;都是用html编写的&#xff0c;包括你现在看到的这篇文章。用html写一个简单的页面&#xff0c;是…

LeetCode 1864. 构成交替字符串需要的最小交换次数

文章目录1. 题目2. 解题1. 题目 给你一个二进制字符串 s &#xff0c;现需要将其转化为一个 交替字符串 。 请你计算并返回转化所需的 最小 字符交换次数&#xff0c;如果无法完成转化&#xff0c;返回 -1 。 交替字符串 是指&#xff1a;相邻字符之间不存在相等情况的字符串…

【机器学习-数据科学】第三节:数据分析实例 分析MovieLens电影数据

数据分析实例 分析MovieLens电影数据导入数据数据合并按性别查看各个电影的平均评分活跃电影排行榜电影投票数据 grouplens.org/datasets/movielens 把文件放到这个路径下 导入数据 数据合并 按性别查看各个电影的平均评分 查看男女评分差别最大的 按照diff去排序 找出分歧…

vue路由切换组件没有加载_Vue面试题: 如何实现路由懒加载?

非懒加载import List from /components/list.vue const router new VueRouter({routes: [{ path: /list, component: List }] })方案一(常用)const List () > import(/components/list.vue) const router new VueRouter({routes: [{ path: /list, component: List }] })方…

LeetCode 1865. 找出和为指定值的下标对(哈希)

文章目录1. 题目2. 解题1. 题目 给你两个整数数组 nums1 和 nums2 &#xff0c;请你实现一个支持下述两类查询的数据结构&#xff1a; 累加 &#xff0c;将一个正整数加到 nums2 中指定下标对应元素上。计数 &#xff0c;统计满足 nums1[i] nums2[j] 等于指定值的下标对 (i,…

聚类算法 距离矩阵_快速且不需要超参的无监督聚类方法

论文&#xff1a; Efficient Parameter-free Clustering Using First Neighbor RelationsEfficient Parameter-free Clustering Using First Neighbor Relations​arxiv.org代码&#xff1a;https://github.com/ssarfraz/FINCH-Clustering​github.com此文是CVPR2019的oral文章…

服务器不知别内存_图文版 许迎果第63期 选购和使用内存需要注意的点

其实要说清楚内存的方方面面还是要颇费一番功夫的.内存的起源和发展历程估计要讲一期,内存厂商,颗粒,品牌也需要单独讲一期,内存超频也要单独讲一期.内存看似简单,但要说的内容却是很多的.所以为了节省各位小伙伴的时间,我会尽量精简,只讲对大多数人都比较实用的部分.本期大体上…

LeetCode 1877. 数组中最大数对和的最小值(贪心)

文章目录1. 题目2. 解题1. 题目 一个数对 (a,b) 的 数对和 等于 a b 。最大数对和 是一个数对数组中最大的 数对和 。 比方说&#xff0c;如果我们有数对 (1,5) &#xff0c;(2,3) 和 (4,4)&#xff0c;最大数对和 为 max(15, 23, 44) max(6, 5, 8) 8 。 给你一个长度为 偶…

小程序多个echars_小程序界面与逻辑

主要内容数据绑定、渲染、界面层数据渲染和事件处理。一、数据绑定1.1 渲染层和逻辑层小程序宿主环境我们称微信客户端给小程序所提供的环境为宿主环境。小程序借助宿主环境提供的能力&#xff0c;可以完成许多普通网页无法完成的功能。小程序开发框架的目标是通过尽可能简单、…

LeetCode 1876. 长度为三且各字符不同的子字符串

文章目录1. 题目2. 解题1. 题目 如果一个字符串不含有任何重复字符&#xff0c;我们称这个字符串为 好 字符串。 给你一个字符串 s &#xff0c;请你返回 s 中长度为 3 的 好子字符串 的数量。 注意&#xff0c;如果相同的好子字符串出现多次&#xff0c;每一次都应该被记入…

numpy维度交换_数据分析-gt;基本操作numpy(1)

1.Numpy介绍与安装Numpy是什么&#xff1f;Numpy(Numerical Python)是目前Python数值计算中最为重要的基础包。大多数计算包都提供了基于Numpy的科学函数功能&#xff0c;将Numpy的数组对象作为数据交换的通用语。Numpy特点提供高效多维数组提供了基于数组的便捷算术操作以及广…

C#学习记录3上——类的封装,继承,多态

OOP面向对象的三大特点&#xff1a;封装&#xff08;encapsulation&#xff09;&#xff0c;继承&#xff08;inheritance&#xff09;&#xff0c;多态&#xff08;encapsulation&#xff09; 和JAVA与C一样&#xff0c;C#也是OOP语言。并且&#xff0c;C#对数据的封装要比C更…

LeetCode 1878. 矩阵中最大的三个菱形和(模拟)

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的整数矩阵 grid 。 菱形和 指的是 grid 中一个正菱形 边界 上的元素之和。 本题中的菱形必须为正方形旋转45度&#xff0c;且四个角都在一个格子当中。 下图是四个可行的菱形&#xff0c;每个菱形和应该包含的格子都用了相应颜…

计算尖峰电流的目的_入门必看!负荷计算的目的、方法以及原则详解

感谢关注【易筑电气】&#xff0c;我们会定期为您推送最新的电气资讯和各类实用干货&#xff0c;欢迎有料的电气设计师加入我们的QQ交流群&#xff1a;571819142。想了解我们的线上讲师招募计划&#xff1f;添加QQ&#xff1a;3335847624 开启新世界~负荷计算目的和意义低压供配…

上下伸缩代码_CQRS之旅——旅程4(扩展和增强订单和注册限界上下文)

旅程4&#xff1a;扩展和增强订单和注册限界上下文进一步探索订单和注册的有界上下文。“我明白&#xff0c;如果一个人想看些新鲜的东西&#xff0c;旅行并不是没有意义的。”儒勒凡尔纳&#xff0c;环游世界80天对限界上下文的更改&#xff1a;前一章详细描述了订单和注册限界…

LeetCode 1879. 两个数组最小的异或值之和(状态压缩DP)

文章目录1. 题目2. 解题2.1 回溯2.2 状态压缩DP1. 题目 给你两个整数数组 nums1 和 nums2 &#xff0c;它们长度都为 n 。 两个数组的 异或值之和 为 (nums1[0] XOR nums2[0]) (nums1[1] XOR nums2[1]) ... (nums1[n - 1] XOR nums2[n - 1]) &#xff08;下标从 0 开始&am…

二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...

本题主要在于考察对二叉搜索树和后序遍历的理解。原题输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树&#xff1a;5 / 2 6…

LeetCode 1880. 检查某单词是否等于两单词之和

文章目录1. 题目2. 解题1. 题目 字母的 字母值 取决于字母在字母表中的位置&#xff0c;从 0 开始 计数。即&#xff0c;a -> 0、b -> 1、c -> 2&#xff0c;以此类推。 对某个由小写字母组成的字符串 s 而言&#xff0c;其 数值 就等于将 s 中每个字母的 字母值 按…