本文来源于数据《Python数据分析》动物书 。。

分享一下电子版本的下载地址:

git@github.com:hashmapybx/learn_python.git  这里可以下载到对应的pdf版本。

下面开始numpy的学习:

# coding: utf-8

# In[10]:

import numpy as np

arr1 = np.array([[[1,2,3], [3,4,5]], [[5,6,7], [7,8,9]]])

print(arr1.shape)  # 2 2 3

print(arr1[1])

print("-----------------")

old_value = arr1[0].copy()

arr1[0] = 122  # 给一个数组赋值一个常量整数  这里在java,是不可以的

print(arr1)

print("+++++++++++++++++")

arr1[0] = old_value  # 原始变回原来的数据

print(arr1)

# In[36]:

from numpy.random import randn

names = np.array(['bob', 'bob', 'will', 'joy', 'will', 'tom', 'jeery'])

data = randn(7, 4)

print(names == 'bob') # 将数组和一个字符串进行比较操作

# print(names[1:])  1: 表示从第一个开始到结尾位置  切片都是视图操作的。

# print(names[:2])

print("============")

# 基于前面的额布尔数组来利用字符串进行检索

# print(data[names == 'bob'])  返回的结果是前面两行的结果数据的

print(data[names == 'bob'])  # 这个的返回结果是2 * 4 数组

print(data)

# In[42]:

names = np.array(['bob', 'bob', 'will', 'joy', 'will', 'tom', 'jeery'])

mask = (names == 'bob') | (names == 'joy')  # 可以利用与 或 的操作在数组上面进行的

print(mask)

data = randn(7, 4)

print(data)

# 打印数组里面大于0的数字 或者把小于0的替换成0

data[data < 0] = 0

print(data)

# 通过一位布尔数组来设置整列或者整行数据

data[names != 'joy'] = 7  # 通过行来操作的。

print(data)

# In[45]:

#  花式索引

arr = np.empty((8, 4))

for i in range(8):

arr[i] = i

print(arr)

# 以特定的顺序来获取子序列

# 给数组穿进去一个序列

print(arr[[2,4,6]])  # 返回的结果是2,4,6行的数据

# 使用负数索引的话,则将会从末尾开始检索的

# In[51]:

#  在数组里面穿进去多个索引数组

arr = np.arange(32).reshape((8,4))

print(arr)

print("==========")

print(arr[[0,1,4, 7], [2,3, 2, 0]])  # 返回的是坐标(0,2) (1,3) (4, 2) (7, 0) 的位置上面的元素

# 但是我们希望返回的额结果吗能是矩阵的形式

print(arr[[1,2]][:, [1,2]]) # : 代表的是某一行的所有元素 后面的[1,2] 代表该行的位置的索引

#返回是一个矩阵的区域

"""

想要返回矩阵块的第二种方法的操作

利用np.ix_函数,该函数会把两个一维的数组转化为矩形区域的检索的器

花式索引的操作是对数据复制到新的数组中的

"""

print(arr[np.ix_([1, 3 ,2, 5], [3, 2,1])]) #返回的结果就是4 * 3

# In[13]:

# 数组的转置操作

import numpy as np

arr = np.arange(15).reshape((3,5))

print(arr.T)  # 转置

from numpy.random import randn

'''

randn(d0, d1,...dn) 函数返回结果是一个数或者一组样本, 这些数据具有标准正太分布

其中的dn表示的是维度

'''

arr1 = np.random.randn(6, 3)  # 表示的是6 * 3的矩阵

print(arr1)

# 矩阵的内积操作

print(np.dot(arr1.T, arr1))  # 结果是3*3

# 对于高维数组的操作中d的话,我们希望串进行去一个表示轴编号(表示行编号)的元组

arr2 = np.arange(16).reshape((2,2,4))

print(arr2)

print("-------------------")

arr3 = arr2.transpose((1,0,2))

# print(arr3)

# 利用一个方法进行转置操作 swapaxes

arr5 = arr2.swapaxes(0, 1)

print(arr5)

# In[11]:

import numpy as np

from numpy.random import randn

points = np.arange(-5, 5, 0.01)

xs, ys = np.meshgrid(points, points)

# print(ys)

# print(xs)

import matplotlib.pyplot as plt

# 计算表达式的值

# z = x^2 + y^2

z = np.sqrt(xs ** 2 +ys ** 2)

plt.imshow(z, cmap=plt.cm.gray); plt.colorbar()

plt.title('Image plot of $\sqrt{x^2 + y^2}$ for a grid of value')

# In[ ]:

# 将条件标书转化为数组运算

import numpy as np

import matplotlib.pyplot as plt

xarr = np.array([1.2, 1.23, 1.4, 3.4])

yarr = np.array([2.1, 3.2, 4.5, 5.6])

cond = np.array([True, False, True, False])

# 现在我们的需求是,当cond里面值为true的话,我们选xarr里面的值,当值为false的话,我们选择yarr的值

result = [

(x if c else y)

for x, y, c in zip(xarr, yarr, cond)

]

print()

# In[8]:

import numpy as np

from numpy.random import randn

# where关键字的用法

arr = randn(4, 4)

print(arr)

# 下面的where表达式可以将大于0的数据替换成2 小于0 的替换成-2

np.where(arr > 0, 2, -2)

# 现在我们只是想要把大于0的替换了

np.where(arr> 0, 2 , arr)

#  例子现在假设我们有两个条件的数组

cond1 = np.array([True, False, True, True])

cond2 = np.array([False, False, True, True])

result = []

for i in range(4):

if cond1[i] and cond2[i]:

result.append(0)

elif cond1[i]:

result.append(1)

elif cond2[i]:

result.append(2)

else:

result.append(3)

for i in result:

print("序号:%s   值:%s" % (result.index(i) + 1, i))

# 看看where的表达式

np.where(cond1 & cond2, 0, np.where(cond1, 1, np.where(cond2, 2, 3)))  # 等价于上面的for循环的表达式

# In[19]:

arr1 = np.random.randn(5,4)

print(arr1)  # 生成具有正太分布的矩阵5* 4  5行4列

# 求均值

print(arr1.mean())

print(arr1.sum(0))  # 求和

# 下面是不进行聚合的函数的操作

arr3 = np.array([[0,1,2], [3,4,5], [5,6,7]])

print(arr3.cumsum(1)) # 从上往下逐行进行累加

print(arr3.cumprod(0)) # 对于列的操作 从左往右开始想乘累加 这里的参数 0 表示是行的方向上面的操作 1表示的是列上的操作

# In[22]:

# 用于布尔数组的操作函数

arr = randn(100)

print((arr >0).sum())  #  55    表示的是在sum用来对于布尔数组里面true的个数和进行求解

bools = np.array([False, True, False, True])

print(bools.any())  # any用于测试是否在数组里面存在一个或者多个True

print(bools.all())  # 检查所值是否都是True

# In[33]:

# 排序的操作 对于一维数组的排序

arr = randn(100)

arr.sort()

# print(arr)

#对于多维数组的排序操作   只需要把对应的轴向的编号穿进去就OK了

arr1 = randn(5,3)

arr1.sort(0) # 0表示行方向的排序 是升序  1 表示的是列的方向的

print(arr1)

# numpy里面的数组去重操作

names = np.array(['bob', 'jerry', 'bob', 'tom'])

print(np.unique(names))  # 这些操作是在数组的副本上面呢进行的

# python里面的等价的去重操作

print(sorted(set(names)))

# python 里面判断一个数是否在数组里面的操作 或者是一个数组中的值是否在另外一个数组里面返回结果的是boolean的值

values = np.array([6,0,0,3,4,5])

arr2 = np.in1d(values, [1,2,3])

print(arr2) # 返回的结果对于第一个组的长度是一样的

# In[34]:

# 用于数组的 文件的输出和输入的操作

# numpy里面的文件你的读写操作磁盘的型的情况  对应的函数 np.load()  np.save()

arr = range(10)

np.save('some_array', arr)

# In[36]:

arr = np.load('some_array.npy')

print(arr)

# np.savez  保存成一个压缩文件   np.savetxt  保存txt文本

np.savez('array_archive.npz', a=arr, b = arr)

# In[37]:

arch = np.load('array_archive.npz') # 返回的结果是一个类似字典的数据类型的

print(arch['a'])

# In[43]:

# 存取文本的数据的操作

#-*- coding:utf-8 -*-

# SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape  woindows下面的额需要转椅'\ ''

arr = np.loadtxt('C:/Users/rocky/Desktop/array.txt', delimiter=',')

print(arr)

np.savetxt('d:/aaa.txt', arr, delimiter='|')

# In[59]:

# 线性代数运算

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

# print(x.shape)

# print(np.ones(3).shape)  # 返回的数组是  3*1  的全是1的数组矩阵

# print(np.dot(x, np.ones(3)).shape)

#numpy.linalg 函数提供了求解行列式  矩阵得分解等

from numpy.linalg import inv, qr

X = randn(4,4)

Y = randn(4, 3)

mat = X.T.dot(X)

# print(mat)

#

# inv 计算矩阵的逆  必须是方阵才可以求逆的

print(mat.dot(inv(mat)))

# QR分解

q,r = qr(mat)

print(q)

# In[ ]:

python案例分析大学生薪资_Python数据分析的案例。。相关推荐

  1. python案例分析大学生薪资_Python数据分析实战:解密数据分析师的薪资和需求

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CPDA数据说 喜欢的朋友欢迎关注小编,除了分享技术文章之外还有很多 ...

  2. python朋友圈点赞统计_Python数据分析实战案例:统计分析微信朋友圈数据(附实操视频)...

    原标题:Python数据分析实战案例:统计分析微信朋友圈数据(附实操视频) 本文内容将通过一个具体实例讲解将朋友圈数据导出为JSON文件的方法,并介绍使用Python统计分析JSON数据的过程. 注: ...

  3. python 股票分析常用库_Python数据分析常用库有哪些?Python学习!

    Python为什么受欢迎?因为Python简单.易懂.好用,是一门高级的编程语言;除此之外,Python提供了大量的第三方库,开箱即用,方便.免费,非常适合从事数据分析领域的工作. 大家也都知道,Py ...

  4. python如何分析高频词_python数据分析高频词提取,pyecharts词云制作并保存

    import pandas as pd import jieba import jieba.analyse filename = "E:\\数据处理\\隐患类型.txt" #载入数 ...

  5. 《数学建模:基于R》一一1.7 数学建模案例分析——食品质量安全抽检数据分析...

    本节书摘来自华章计算机<数学建模:基于R>一书中的第1章,第1.7节,作者:薛 毅 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.7 数学建模案例分析-- ...

  6. python 银行数据分析_银行业务概述_Python数据分析行业案例课程--信用评分方法_数据挖掘与分析视频-51CTO学院...

    注意: 1. 本行业案例课程为Python 3 数据分析系列课程的行业案例部分,学员请务必先观看课程介绍免费视频,确认已学习本课程所需Python分析技能. 2. 本课程的核心目的是协助学员学习具体业 ...

  7. python实验数据预处理案例_Python数据分析小案例——红楼梦文本分析(一) 文本预处理...

    本文开始介绍一个简单的数据分析案例,分析红楼梦文本,本文主要内容是将红楼梦文本按照章节获取每一回的标题,字数,段落数并保存到csv中方便后续数据分析 红楼梦小说文本可以在这里下载 链接:https:/ ...

  8. python金融数据分析案例_Python数据分析行业案例课程--欺诈检测

    注意: 1. 本行业案例课程为Python 3 数据分析系列课程的行业案例部分,学员请务必先观看课程介绍免费视频,确认已学习本课程所需Python分析技能. 2. 本课程的核心目的是协助学员学习具体业 ...

  9. 案例分析:FIFA2018球员数据分析

    案例分析练习: FIFA2018球员数据分析 # 引入要使用的库 import numpy as np import pandas as pd import matplotlib.pyplot as ...

最新文章

  1. 目前有没有好用的RNASeq的pipeline呢?
  2. Spring-profile设置
  3. oracle apply handler,做什么BaseHandler.apply_response_修复在django吗?
  4. python opencv 如何给图片添加文字?cv2.putText() PIL
  5. python怎么输入文件数据库_python学习日记——文件及数据库
  6. 常见Kotlin高频问题解惑
  7. lintcode二叉树的锯齿形层次遍历 (双端队列)
  8. 阿里的技术愿景_技术技能的另一面:领域知识和长期愿景
  9. Strust2初之体验
  10. android xml导进数据库,Android通过xml文件配置数据库
  11. OC学习篇之---类的初始化方法和点语法的使用
  12. 敏捷开发一千零一问系列之十二:敏捷实施的步骤?
  13. 磁力链转bt种子 python_实战Python实现BT种子转化为磁力链接
  14. 项目管理过程标准及绩效考核
  15. sbt启动机制、配置优化及与Intellij IDEA的集成
  16. 【CCNA第二天】路由器密码破解及恢复
  17. 炫酷的个人引导单页源码
  18. c语言mod是什么意思,mod什么意思中文意思,Mod是什么意思
  19. Weighted Boxes Fusion加权检测框合并
  20. 远程桌面桌面无法找到计算机,Windows – 远程桌面客户端找不到远程计算机

热门文章

  1. OS-Revision---进程同步
  2. springMVC自动获取jsp页面input中的值,封装成对象传入后台
  3. VueX核心概念与详细实例
  4. 眼睛随着鼠标转动方向
  5. 抖音seo账号矩阵优化霸屏系统独立源码技术开发搭建
  6. 第十四周项目一 之【二叉排序树】
  7. openCV4.0 C++ 快速入门30讲学习笔记(自用 代码+注释)详细版
  8. 删除计算机里设备和驱动器中的爱奇艺、PPS、百度云、360云盘图标
  9. MATLAB(四)初阶绘图
  10. linux系统能运行广联达吗,广联达能在苹果电脑的系统下运行吗