
正文
Matplotlib&Numpy
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Matplotlib- 是专门用于开发2D图表(包括3D图表)
- 以渐进、交互式方式实现数据可视化
实现一个简单的Matplotlib画图
①导入:matplotlib.pytplot包含了一系列类似于matlab的画图函数。
②图形绘制流程:
创建画布 -- plt.figure()
绘制图像 -- plt.plot(x, y)
显示图像 -- plt.show()
import matplotlib.pyplot as plt# 1.创建画布
plt.figure()# 2.绘制折线图
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])# 3.显示图像
plt.show()
输出:

扩展画图的功能添加自定义x,y刻度
plt.xticks(x, **kwargs)
x:要显示的刻度值
plt.yticks(y, **kwargs)
y:要显示的刻度值
#添加x,y轴刻度
x_ticket=["11点{}分".format(i) for i in x]
y_ticket=range(60)
#修改x,y轴的坐标刻度线是
plt.xticks(x[::5],x_ticket[::5])
plt.yticks(y_ticket[::5])
plt.xticks(x, **kwargs)
x:要显示的刻度值
plt.yticks(y, **kwargs)
y:要显示的刻度值
#添加x,y轴刻度
x_ticket=["11点{}分".format(i) for i in x]
y_ticket=range(60)
#修改x,y轴的坐标刻度线是
plt.xticks(x[::5],x_ticket[::5])
plt.yticks(y_ticket[::5])


中文显示问题解决
from pylab import mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
添加网格显示
#添加网格显示
plt.grid(True,linestyle='--',alpha=0.5)

添加描述信息
#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点-12点某城市温度变化图",fontsize=20)

图像保存
#保存图片
plt.savefig("./test.png")
在一个坐标系中绘制多个图像
只要多次plot就行
x=range(60)
y=[random.uniform(15,18) for i in x]
y2=[random.uniform(3,5) for i in x]
#绘制画布
plt.figure(figsize=(10,8),dpi=100)
#绘制图像
plt.plot(x,y,label="上海")
plt.plot(x,y2,color='r',linestyle='--',label="北京")
设置图形风格
| 颜色字符 | 风格字符 |
|---|---|
| r 红色 | - 实线 |
| g 绿色 | - - 虚线 |
| b 蓝色 | -. 点划线 |
| w 白色 | : 点虚线 |
| c 青色 | ' ' 留空、空格 |
| m 洋红 | |
| y 黄色 | |
| k 黑色 |
显示图例
如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。
import matplotlib.pyplot as plt
import random
from pylab import mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x=range(60)
y=[random.uniform(15,18) for i in x]
y2=[random.uniform(3,5) for i in x]
#绘制画布
plt.figure(figsize=(10,8),dpi=100)
#绘制图像
plt.plot(x,y,label="上海")
plt.plot(x,y2,color='r',linestyle='--',label="北京")
#添加网格显示
plt.grid(True,linestyle='--',alpha=0.5)
#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点-12点某城市温度变化图",fontsize=20)
#添加x,y轴刻度
x_ticket=["11点{}分".format(i) for i in x]
y_ticket=range(60)
#修改x,y轴的坐标刻度线是
plt.xticks(x[::5],x_ticket[::5])
plt.yticks(y_ticket[::5])
#保存图片
plt.savefig("./test.png")
#显示图例
plt.legend(loc="best")
plt.show()

多个坐标系显示— plt.subplots(面向对象的画图方法)
matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw) 创建一个带有多个axes(坐标系/绘图区)的图
import matplotlib.pyplot as plt
import random
from pylab import mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x=range(60)
y=[random.uniform(15,18) for i in x]
y2=[random.uniform(3,5) for i in x]
#绘制画布
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(30,15),dpi=100)
#绘制图像
axes[0].plot(x,y,label="上海")
axes[1].plot(x,y2,color='r',linestyle='--',label="北京")
#添加网格显示
axes[0].grid(True,linestyle='--',alpha=0.5)
axes[1].grid(True,linestyle='--',alpha=0.5)
# #添加描述信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点-12点某城市温度变化图",fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点-12点某城市温度变化图",fontsize=20)
#添加x,y轴刻度
x_ticket=["11点{}分".format(i) for i in x]
y_ticket=range(60)
#修改x,y轴的坐标刻度线是
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticket[::5])
axes[0].set_xticklabels(x_ticket[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticket[::5])
axes[1].set_xticklabels(x_ticket[::5])
# #保存图片
plt.savefig("./test.png")
# #显示图例
axes[0].legend(loc="best")
axes[1].legend(loc="best")
plt.show()

画各种数学函数图像
正弦(sin),余弦(cos),正切(tan),反正弦(arcsin),反余弦(arccos),反正切(arctan)
import numpy as np
import matplotlib.pyplot as plt
# 0.准备数据
x = np.linspace(-10, 10, 1000)
y = np.sin(x)# 1.创建画布
plt.figure(figsize=(20, 8), dpi=100)# 2.绘制函数图像
plt.plot(x, y)
# 2.1 添加网格显示
plt.grid()# 3.显示图像
plt.show()

制折线图、散点图、柱状图、直方图、饼图
折线图:以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
api:plt.plot(x, y)
散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
api:plt.scatter(x, y)
import matplotlib.pyplot as plt
from pylab import mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=Falsex = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01, 20.67, 288.64,
163.56, 120.06, 207.83, 342.75, 147.9 , 53.06, 224.72, 29.51,
21.61, 483.21, 245.25, 399.25, 343.35]
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61, 24.9 , 239.34,
140.32, 104.15, 176.84, 288.23, 128.79, 49.64, 191.74, 33.1 ,
30.74, 400.02, 205.35, 330.64, 283.45]
#创建画布
plt.figure(figsize=(20,8),dpi=100)
#绘制图像
plt.scatter(x,y)
#图像显示
plt.show()

柱状图:排列在工作表的列或行中的数据可以绘制到柱状图中。
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)
api:plt.bar(x, width, align='center', **kwargs)
Parameters:
x : 需要传递的数据width : 柱状图的宽度align : 每个柱状图的位置对齐方式
{‘center’, ‘edge’}, optional, default: ‘center’**kwargs :
color:选择柱状图的颜色
import matplotlib.pyplot as plt
from pylab import mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False# 电影名字
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
# 横坐标
x = range(len(movie_name))
# 票房数据
y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]#创建画布
plt.figure(figsize=(20,8),dpi=100)
#绘制图像
plt.bar(x,y,color=['b','r','g','y','c','m','y','k','c','g','b'],width=0.7)
#修改x轴显示
plt.xticks(x,movie_name)
#添加网格
plt.grid(linestyle="--",alpha=0.8)
#添加标题
plt.title("电影票房收入对比")
#图像显示
plt.show()

直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
api:matplotlib.pyplot.hist(x, bins=None)
Parameters:
x : 需要传递的数据
bins : 组距
import matplotlib.pyplot as plt
import numpy as np
from pylab import mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
plt.figure(figsize=(20,8),dpi=100)
x2=np.random.uniform(-10,10,1000)
plt.hist(x2,1000)#x2为使用的数据,1000为划分的区间数
plt.show()

饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类。
特点:分类数据的占比情况(占比)
api:plt.pie(x, labels=,autopct=,colors)
Parameters:
x:数量,自动算百分比
labels:每部分名称
autopct:占比显示指定%1.2f%%
colors:每部分颜色
import matplotlib.pyplot as plt
import numpy as np
from pylab import mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
plt.figure(figsize=(20,8),dpi=100)x=[10,20,30,40]
labels=["算法","网页","人工智能","大数据"]colors=["r","g","y","b"]
plt.pie(x,labels=labels,autopct="%1.2f%%",colors=colors)
# 显示图例
plt.legend()
plt.show()

Numpy
Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。
Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
简单认识import numpy as np
#二维数组
score=np.array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
print(score.shape)#数组维度的元组
print(score.ndim)#数组维数
print(score.size)#数组中的元素数量
print(score.itemsize)#一个数组元素的长度
print(score.dtype)#数组元素的类型
#三维数组,自定义数据类型
c=np.array([[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69]],
[[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]]],dtype=np.float32)
print(c)
print(c.ndim)
print(c.shape)
import numpy as np
#二维数组
score=np.array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
print(score.shape)#数组维度的元组
print(score.ndim)#数组维数
print(score.size)#数组中的元素数量
print(score.itemsize)#一个数组元素的长度
print(score.dtype)#数组元素的类型
#三维数组,自定义数据类型
c=np.array([[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69]],
[[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]]],dtype=np.float32)
print(c)
print(c.ndim)
print(c.shape)
输出:
(8, 5)
2
40
4
int32
[[[80. 89. 86. 67. 79.]
[78. 97. 89. 67. 81.]
[90. 94. 78. 67. 74.]
[91. 91. 90. 67. 69.]]
[[76. 87. 75. 67. 86.]
[70. 79. 84. 67. 84.]
[94. 92. 93. 67. 64.]
[86. 85. 83. 67. 80.]]]
3
(2, 4, 5)
深拷贝与浅拷贝import numpy as np# a=np.ones([3,3])
# print(a)
# b=np.zeros_like(a)
# print(b)#从现有数组生成
k=np.array([[1,2,3],[4,5,6]])
#深拷贝
k1=np.array(k)
#浅拷贝
k2=np.asarray(k)
print(k1)
print(k2)
k[0,0]=100
#源数据改变,因此浅拷贝的数据也会改变
print(k1)
print(k2)
import numpy as np# a=np.ones([3,3])
# print(a)
# b=np.zeros_like(a)
# print(b)#从现有数组生成
k=np.array([[1,2,3],[4,5,6]])
#深拷贝
k1=np.array(k)
#浅拷贝
k2=np.asarray(k)
print(k1)
print(k2)
k[0,0]=100
#源数据改变,因此浅拷贝的数据也会改变
print(k1)
print(k2)
输出:
[[1 2 3]
[4 5 6]]
[[1 2 3]
[4 5 6]]
[[1 2 3]
[4 5 6]]
[[100 2 3]
[ 4 5 6]]
间隔数组,等差数组,等比数组import numpy as np
#生成等间隔的数组
a=np.linspace(0,100,11)
print(a)
#创建等差数组-指定步长
b=np.arange(10,50,2)
print(b)
#创建等比数列
#start:10**start次方开始,stop:10**stop次方结束,num为生成的样本个数
c=np.logspace(1,3,100)
print(c)
import numpy as np
#生成等间隔的数组
a=np.linspace(0,100,11)
print(a)
#创建等差数组-指定步长
b=np.arange(10,50,2)
print(b)
#创建等比数列
#start:10**start次方开始,stop:10**stop次方结束,num为生成的样本个数
c=np.logspace(1,3,100)
print(c)
输出:
[ 0. 10. 20. 30. 40. 50. 60. 70. 80. 90. 100.]
[10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48]
[ 10. 10.47615753 10.97498765 11.49756995 12.0450354
12.61856883 13.21941148 13.84886371 14.50828778 15.19911083
15.92282793 16.68100537 17.475284 18.3073828 19.17910262
20.09233003 21.04904145 22.0513074 23.101297 24.20128265
25.35364494 26.56087783 27.82559402 29.15053063 30.53855509
31.99267138 33.51602651 35.11191734 36.78379772 38.53528594
40.37017259 42.29242874 44.30621458 46.41588834 48.6260158
50.94138015 53.36699231 55.90810183 58.57020818 61.35907273
64.28073117 67.34150658 70.54802311 73.90722034 77.42636827
81.11308308 84.97534359 89.02150854 93.26033469 97.70099573
102.35310219 107.2267222 112.3324033 117.68119524 123.28467394
129.1549665 135.30477746 141.74741629 148.49682623 155.56761439
162.97508346 170.73526475 178.86495291 187.38174229 196.304065
205.65123083 215.443469 225.70197196 236.44894126 247.7076356
259.50242114 271.85882427 284.80358684 298.36472403 312.57158497
327.45491629 343.04692863 359.38136638 376.49358068 394.42060594
413.20124001 432.87612811 453.48785081 475.08101621 497.70235643
521.4008288 546.22772177 572.23676594 599.48425032 628.02914418
657.93322466 689.26121043 722.08090184 756.46332755 792.48289835
830.21756813 869.74900262 911.16275612 954.54845666 1000. ]
生成0和1的数组import numpy as npa=np.ones([3,3])
print(a)
b=np.zeros_like(a)
print(b)
import numpy as npa=np.ones([3,3])
print(a)
b=np.zeros_like(a)
print(b)
输出:
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
生成随机数组import matplotlib.pyplot as plt
import numpy as np#生成一个正态分布
#0为均值,1为标准差,这是一个标准的正态分布
x1=np.random.normal(0,1,100000000)
plt.figure()
plt.hist(x1,1000)
plt.show()#生成一个四行五列的正态分布表
stack=np.random.normal(0,1,[4,5])
print(stack)#均匀分布
#上限为1,下限为-1,生成10000000个随机数
x2=np.random.uniform(-1,1,10000000)
print(x2)
plt.figure()
plt.hist(x2,1000)#x2为使用的数据,1000为划分的区间数
plt.show()
import matplotlib.pyplot as plt
import numpy as np#生成一个正态分布
#0为均值,1为标准差,这是一个标准的正态分布
x1=np.random.normal(0,1,100000000)
plt.figure()
plt.hist(x1,1000)
plt.show()#生成一个四行五列的正态分布表
stack=np.random.normal(0,1,[4,5])
print(stack)#均匀分布
#上限为1,下限为-1,生成10000000个随机数
x2=np.random.uniform(-1,1,10000000)
print(x2)
plt.figure()
plt.hist(x2,1000)#x2为使用的数据,1000为划分的区间数
plt.show()

[[ 0.21734627 -0.97992775 0.24635965 -0.52524527 0.61409397]
[-0.42891216 0.07972822 -0.09477911 1.77777235 -0.09798548]
[ 0.30071645 -0.95531024 0.30922396 -0.72969828 -0.43364537]
[-1.27946259 -1.05671799 0.74995682 0.51016288 0.50191553]]

数组的索引、切片
一维、二维、三维的数组如何索引?
- 直接进行索引,切片
- 对象[:, :] -- 先行后列
import numpy as npa=np.random.normal(0,1,(4,5))
print(a)
print(a[0:3,0:3])# 三维
a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])
print(a1[0,0,1])
输出:
[[-0.8475957 0.59500006 -0.99042764 -1.47068488 1.04488987]
[ 1.05759779 -0.34656605 0.25075867 1.26481382 -0.02561291]
[ 0.00384902 0.53486762 -0.94276903 -0.33453538 1.447024 ]
[ 0.60627864 0.26352157 0.61437243 -1.0099516 -1.34009347]]
[[-0.8475957 0.59500006 -0.99042764]
[ 1.05759779 -0.34656605 0.25075867]
[ 0.00384902 0.53486762 -0.94276903]]
2
形状修改import numpy as np#创建数据
a=np.random.normal(0,1,(4,5))
print("源数据:{}".format(a))
#reshape:返回一个具有相同数据域,但shape不一样的视图
b=a.reshape([5,4])
print("reshape为5行4列的新数据:{}".format(b))
c=a.reshape([-1,2])
print("reshape为?行2列的新数据:{}".format(c))
d=a.reshape([2,-1])
print("reshape为2行?列的新数据:{}".format(d))#resize:修改数组本身的形状(需要保持元素个数前后相同)
a.resize([10,2])
print("修改本身为10行2列后的数据:{}".format(a))#转置
a=a.T
print("转置后的数据:{}".format(a))
#修改数组的数据类型
a=a.astype(np.int32)
print("修改数据的类型为int:{}".format(a))
#转为字符串
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
print("转为字符串:{}".format(arr.tostring()))
#数组去重
tmp=np.array([[1,2,3,4],[3,4,5,6]])
print("数组去重后的数据:{}".format(np.unique(tmp)))
import numpy as np#创建数据
a=np.random.normal(0,1,(4,5))
print("源数据:{}".format(a))
#reshape:返回一个具有相同数据域,但shape不一样的视图
b=a.reshape([5,4])
print("reshape为5行4列的新数据:{}".format(b))
c=a.reshape([-1,2])
print("reshape为?行2列的新数据:{}".format(c))
d=a.reshape([2,-1])
print("reshape为2行?列的新数据:{}".format(d))#resize:修改数组本身的形状(需要保持元素个数前后相同)
a.resize([10,2])
print("修改本身为10行2列后的数据:{}".format(a))#转置
a=a.T
print("转置后的数据:{}".format(a))
#修改数组的数据类型
a=a.astype(np.int32)
print("修改数据的类型为int:{}".format(a))
#转为字符串
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
print("转为字符串:{}".format(arr.tostring()))
#数组去重
tmp=np.array([[1,2,3,4],[3,4,5,6]])
print("数组去重后的数据:{}".format(np.unique(tmp)))
源数据:[[-1.01605099 0.04340228 -0.13464495 1.15063668 -0.6123171 ]
[-2.47248818 0.92994026 -0.85258242 0.1856697 1.41896786]
[ 1.87231721 -0.26889703 -0.07252063 -0.40996587 0.21071932]
[-0.67559295 1.39530076 -0.20394447 -0.39996382 0.03839303]]
reshape为5行4列的新数据:[[-1.01605099 0.04340228 -0.13464495 1.15063668]
[-0.6123171 -2.47248818 0.92994026 -0.85258242]
[ 0.1856697 1.41896786 1.87231721 -0.26889703]
[-0.07252063 -0.40996587 0.21071932 -0.67559295]
[ 1.39530076 -0.20394447 -0.39996382 0.03839303]]
reshape为?行2列的新数据:[[-1.01605099 0.04340228]
[-0.13464495 1.15063668]
[-0.6123171 -2.47248818]
[ 0.92994026 -0.85258242]
[ 0.1856697 1.41896786]
[ 1.87231721 -0.26889703]
[-0.07252063 -0.40996587]
[ 0.21071932 -0.67559295]
[ 1.39530076 -0.20394447]
[-0.39996382 0.03839303]]
reshape为2行?列的新数据:[[-1.01605099 0.04340228 -0.13464495 1.15063668 -0.6123171 -2.47248818
0.92994026 -0.85258242 0.1856697 1.41896786]
[ 1.87231721 -0.26889703 -0.07252063 -0.40996587 0.21071932 -0.67559295
1.39530076 -0.20394447 -0.39996382 0.03839303]]
修改本身为10行2列后的数据:[[-1.01605099 0.04340228]
[-0.13464495 1.15063668]
[-0.6123171 -2.47248818]
[ 0.92994026 -0.85258242]
[ 0.1856697 1.41896786]
[ 1.87231721 -0.26889703]
[-0.07252063 -0.40996587]
[ 0.21071932 -0.67559295]
[ 1.39530076 -0.20394447]
[-0.39996382 0.03839303]]
转置后的数据:[[-1.01605099 -0.13464495 -0.6123171 0.92994026 0.1856697 1.87231721
-0.07252063 0.21071932 1.39530076 -0.39996382]
[ 0.04340228 1.15063668 -2.47248818 -0.85258242 1.41896786 -0.26889703
-0.40996587 -0.67559295 -0.20394447 0.03839303]]
修改数据的类型为int:[[-1 0 0 0 0 1 0 0 1 0]
[ 0 1 -2 0 1 0 0 0 0 0]]
转为字符串:b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x0c\x00\x00\x00\x03\x00\x00\x00"\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00'
数组去重后的数据:[1 2 3 4 5 6]
array运算import numpy as npscore=np.random.randint(40,100,(10,5))
print(score)
print()
test_score=score[6:,0:5]
# 逻辑判断, 如果成绩大于60就标记为True 否则为False
print(test_score>60)
# BOOL赋值, 将满足条件的设置为指定的值-布尔索引
test_score[test_score>60]=1
print(test_score)#通用判断函数
# 判断前两名同学的成绩[0:2, :]是否全及格
print(np.all(score[0:2,:]>60))
# 判断前两名同学的成绩[0:2, :]是否有大于90分的
print(np.any(score[0:2,:]>90))#三元运算符
temp=score[:4,:4]
print(temp)
print(np.where(temp>60,1,0))
# #三元运算的与操作
print(np.where(np.logical_and(temp>60,temp<90),1,0))
# #三元运算的或操作
print(np.where(np.logical_or(temp>90,temp<60),1,0))#统计运算
tmp=score[:4,:]
print(tmp)
#最大值
print("最大值:"+str(np.max(tmp)))
#平均值
print("平均值:"+str(np.mean(tmp)))
#中位数
print("中位数:{}".format(np.median(tmp)))
#标准差
print("标准差:{}".format(np.std(tmp)))
#方差
print("方差:{}".format(np.var(tmp)))
#每列的最大值
print("每列的最大值:"+str(np.max(tmp,axis=0)))
#每行的最大值
print("每行的最大值:"+str(np.max(tmp,axis=1)))
#最大值的下标
print("最大值的下标:"+str(np.argmax(tmp)))
#每列的最大值下标
print("每列的最大值下标:"+str(np.argmax(tmp,axis=0)))
#最小值下标
print("最小值下标:"+str(np.argmin(tmp)))
#每行的最小值下标
print("每行的最小值下标:"+str(np.argmin(tmp,axis=1)))
数组间的运算import numpy as np
#数组运算
a=np.array([[1,2,3],[3,4,5]])
print(a*3)
#列表运算
b=[1,2,3]
print(b*3)
#数组间的运算,要满足广播机制
#维度相等
#shape对应的地方为1
arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
print(np.shape(arr1))
arr2 = np.array([[1], [3]])
print(np.shape(arr2))
print(arr1+arr2)
import numpy as npscore=np.random.randint(40,100,(10,5))
print(score)
print()
test_score=score[6:,0:5]
# 逻辑判断, 如果成绩大于60就标记为True 否则为False
print(test_score>60)
# BOOL赋值, 将满足条件的设置为指定的值-布尔索引
test_score[test_score>60]=1
print(test_score)#通用判断函数
# 判断前两名同学的成绩[0:2, :]是否全及格
print(np.all(score[0:2,:]>60))
# 判断前两名同学的成绩[0:2, :]是否有大于90分的
print(np.any(score[0:2,:]>90))#三元运算符
temp=score[:4,:4]
print(temp)
print(np.where(temp>60,1,0))
# #三元运算的与操作
print(np.where(np.logical_and(temp>60,temp<90),1,0))
# #三元运算的或操作
print(np.where(np.logical_or(temp>90,temp<60),1,0))#统计运算
tmp=score[:4,:]
print(tmp)
#最大值
print("最大值:"+str(np.max(tmp)))
#平均值
print("平均值:"+str(np.mean(tmp)))
#中位数
print("中位数:{}".format(np.median(tmp)))
#标准差
print("标准差:{}".format(np.std(tmp)))
#方差
print("方差:{}".format(np.var(tmp)))
#每列的最大值
print("每列的最大值:"+str(np.max(tmp,axis=0)))
#每行的最大值
print("每行的最大值:"+str(np.max(tmp,axis=1)))
#最大值的下标
print("最大值的下标:"+str(np.argmax(tmp)))
#每列的最大值下标
print("每列的最大值下标:"+str(np.argmax(tmp,axis=0)))
#最小值下标
print("最小值下标:"+str(np.argmin(tmp)))
#每行的最小值下标
print("每行的最小值下标:"+str(np.argmin(tmp,axis=1)))
import numpy as np
#数组运算
a=np.array([[1,2,3],[3,4,5]])
print(a*3)
#列表运算
b=[1,2,3]
print(b*3)
#数组间的运算,要满足广播机制
#维度相等
#shape对应的地方为1
arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
print(np.shape(arr1))
arr2 = np.array([[1], [3]])
print(np.shape(arr2))
print(arr1+arr2)
[[ 3 6 9]
[ 9 12 15]]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
(2, 6)
(2, 1)
[[2 3 4 3 2 5]
[8 9 4 5 6 4]]
矩阵乘法
np.matmul和np.dot的区别:
二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。
import numpy as npa = np.array([[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]])
b=np.array([[0.7],[0.3]])
print(np.dot(a,b))
print(np.matmul(a,b))
c=10
print(np.dot(c,a))
输出:
[[81.8]
[81.4]
[82.9]
[90. ]
[84.8]
[84.4]
[78.6]
[92.6]]
[[81.8]
[81.4]
[82.9]
[90. ]
[84.8]
[84.4]
[78.6]
[92.6]]
[[800 860]
[820 800]
[850 780]
[900 900]
[860 820]
[820 900]
[780 800]
[920 940]]
Matplotlib&Numpy的更多相关文章- python 3.4 装matplotlib numpy
为了装个matplotlib包,搞了好久: python3.4,官方没有对应版本的包,只能去下面这个地方下对应的版本: http://www.lfd.uci.edu/~gohlke/pythonl ...
- matplotlib&;numpy画图
import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,6,100) y=np.cos(2*np.pi*x)*np.exp ...
- matplotlib numpy scipy 的安装
一:windows 端的安装 #cmd指令 python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sym ...
- 无用之学matplotlib,numpy,pandas
一.matplotlib学习 matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 例子1: # coding=utf- from ...
- 测试这个才可以打包 我的PYQt matplotlib numpy 等程序
from distutils.core import setup import py2exe import matplotlib import sys import FileDialog import ...
- 绘图 Matplotlib Numpy Pandas
丈夫气力全,一个拟当千.猛气冲心出,视死亦如眠. 绘图 Matplotlib可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法. 能将数据进行可视化,更直观的呈现使数据更 ...
- Python matplotlib numpy 曼德尔布罗特集合 曼德尔布罗特 B.Madelbrot
import numpy as np import matplotlib.pyplot as plt def mandelbrot(h,w,maxit=20): y,x = np.ogrid[-1.4 ...
- matplotlib学习之绘图基础
matplotlib:http://www.cnblogs.com/jasonhaven/p/7609059.html 1.基本图形 散点图:显示两组数据的值,每个点的坐标位置由变量的值决定,头一组不 ...
- 数据分析三剑客之numpy
Numpy 简介 数据分析三剑客:Numpy,Pandas,Matplotlib NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算, ...
随机推荐- Dapper学习 - Dapper的基本用法(三) - CUD
之前介绍了Dapper的查询, 存储过程, 函数的调用, 接下来要说一下Dapper的增删改, 其实Dapper的增删改, 都是同一种模式的. 我就不分开介绍了, 直接在一个例子上展现好了. var ...
- dell 电脑关闭触摸板的。
桌面计算机(点击右键)----管理----设备管理器-----鼠标------选择触摸板(ps/2 兼容鼠标)---右击------跟新驱动-------浏览计算机查找------从计算机列表中选择- ...
- snmp v3
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=7654720&id=3355515 http://tydldd.ite ...
- GoF的23个经典设计模式
以文本和思维导图的方式简明扼要的介绍了GoF的23个经典设计模式,可当成学习设计模式的一个小手册,偶尔看一下,说不定会对大师的思想精髓有新的领悟. GoF(“四人帮”,又称Gang of Four,即 ...
- Windows Azure 的磁盘管理相关概念
在 Windows Azure 的虚拟机中,磁盘有多种使用方式.操作系统磁盘是用来为虚拟机提供操作系统的虚拟硬盘.数据磁盘是附加到虚拟机上用来存储应用程序数据的 VHD. 根据应用程序的需要,可从多种 ...
- js-计算器
<div class="main"><h1>HTML5-计算器</h1> <input id="num1& ...
- 认识 var、let、const
我们通过声明.初始化.值的可变性.作用域.变量提升以及在工作中如何使用等多个方面来详细了解var.let.const等关键字功能与特点. 声明 var,let:可以先声明,后赋值(初始化),默认值是 ...
- idea好用插件(一)
代码规范插件 Alibaba Java Coding Guidelines 安装后 可以在文件.文件夹邮件,显示编码规约扫描,点击后显示 可以通过双击定位问题代码,对某些问题可以进行快速的修复 比如: ...
- framework7 入门(数据绑定)
数据绑定是用template7,官网,framework7内置template7,不用单独下载,下面介绍一些简单的绑定 当你的数据是个数组 return{ data:function(){ let i ...
- Asp.Net 初级 高级 学习笔记
01.Main函数是什么?在程序中使用Main函数有什么需要注意的地方?02.CLR是什么?程序集是什么?当运行一个程序集的时候,CLR做了什么事情?03.值类型的默认值是什么?(情况一:字段或全局静 ...
为了装个matplotlib包,搞了好久: python3.4,官方没有对应版本的包,只能去下面这个地方下对应的版本: http://www.lfd.uci.edu/~gohlke/pythonl ...
import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,6,100) y=np.cos(2*np.pi*x)*np.exp ...
一:windows 端的安装 #cmd指令 python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sym ...
一.matplotlib学习 matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 例子1: # coding=utf- from ...
from distutils.core import setup import py2exe import matplotlib import sys import FileDialog import ...
丈夫气力全,一个拟当千.猛气冲心出,视死亦如眠. 绘图 Matplotlib可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法. 能将数据进行可视化,更直观的呈现使数据更 ...
import numpy as np import matplotlib.pyplot as plt def mandelbrot(h,w,maxit=20): y,x = np.ogrid[-1.4 ...
matplotlib:http://www.cnblogs.com/jasonhaven/p/7609059.html 1.基本图形 散点图:显示两组数据的值,每个点的坐标位置由变量的值决定,头一组不 ...
Numpy 简介 数据分析三剑客:Numpy,Pandas,Matplotlib NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算, ...
- Dapper学习 - Dapper的基本用法(三) - CUD
之前介绍了Dapper的查询, 存储过程, 函数的调用, 接下来要说一下Dapper的增删改, 其实Dapper的增删改, 都是同一种模式的. 我就不分开介绍了, 直接在一个例子上展现好了. var ...
- dell 电脑关闭触摸板的。
桌面计算机(点击右键)----管理----设备管理器-----鼠标------选择触摸板(ps/2 兼容鼠标)---右击------跟新驱动-------浏览计算机查找------从计算机列表中选择- ...
- snmp v3
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=7654720&id=3355515 http://tydldd.ite ...
- GoF的23个经典设计模式
以文本和思维导图的方式简明扼要的介绍了GoF的23个经典设计模式,可当成学习设计模式的一个小手册,偶尔看一下,说不定会对大师的思想精髓有新的领悟. GoF(“四人帮”,又称Gang of Four,即 ...
- Windows Azure 的磁盘管理相关概念
在 Windows Azure 的虚拟机中,磁盘有多种使用方式.操作系统磁盘是用来为虚拟机提供操作系统的虚拟硬盘.数据磁盘是附加到虚拟机上用来存储应用程序数据的 VHD. 根据应用程序的需要,可从多种 ...
- js-计算器
<div class="main"><h1>HTML5-计算器</h1> <input id="num1& ...
- 认识 var、let、const
我们通过声明.初始化.值的可变性.作用域.变量提升以及在工作中如何使用等多个方面来详细了解var.let.const等关键字功能与特点. 声明 var,let:可以先声明,后赋值(初始化),默认值是 ...
- idea好用插件(一)
代码规范插件 Alibaba Java Coding Guidelines 安装后 可以在文件.文件夹邮件,显示编码规约扫描,点击后显示 可以通过双击定位问题代码,对某些问题可以进行快速的修复 比如: ...
- framework7 入门(数据绑定)
数据绑定是用template7,官网,framework7内置template7,不用单独下载,下面介绍一些简单的绑定 当你的数据是个数组 return{ data:function(){ let i ...
- Asp.Net 初级 高级 学习笔记
01.Main函数是什么?在程序中使用Main函数有什么需要注意的地方?02.CLR是什么?程序集是什么?当运行一个程序集的时候,CLR做了什么事情?03.值类型的默认值是什么?(情况一:字段或全局静 ...








