当前位置: 移动技术网 > IT编程>脚本编程>Python > Python之数据分析(Numpy的数据可视化、ndarray属性)

Python之数据分析(Numpy的数据可视化、ndarray属性)

2020年07月08日  | 移动技术网IT编程  | 我要评论

一、ndarray属性

1、常用属性

  • dtype:数组类型
  • shape:数组维度
  • T:转置视图
  • ndim:维数(一维是1,二维是2,三维是3……)
  • size:元素数
  • itemsize:每个元素的字节数
  • nbytes:数组总字节数(size * itemsieze)
  • flat:扁平迭代器(若不想每行每列访问元素,可以扁平化成1行来访问),扁平化之后可以用下标来取值,用于批量修改值
  • real:复数的实部数组
  • imag:复数的虚部数组
  • 数组.tolist():将数组变成列表对象

2、ndarray练习

import numpy as np

a = np.array([
    [1+1j, 2+4j, 3+7j],
    [4+2j, 5+5j, 6+8j],
    [7+3j, 8+6j, 9+9j]
])
# print(a.dtype, a.dtype.str, a.dtype.char)
# print(a.shape)
# print(a.ndim)
# print(a.size, len(a))
# print(a.itemsize)
# print(a.nbytes)
# print(a.real, a.imag, sep='\n')
# for item in a.flat:
#     print(item)
# print(a.flat[[1, 3, 5]])

# a.flat[[2, 4, 6]] = 0
# print(a)

x = np.array([10, 20, 30])
y = 40
def fun(a, b):
    a.append(b)
    return a
x = np.array(fun(x.tolist(), y))
# print(x)
x = np.append(x, 50)
print(x)

二、数据可视化

1、可视化工具
matplotlib:数学绘图库

常用导入:matplotlib.pyplot

习惯:
import numpy as np
import matplotlib.pyplot as mp
因此,以下代码中的np就是numpy,mp就是matplotlib.pyplot数据可视化

2、基本绘图方法

  • 默认曲线:mp.plot(水平坐标数组,垂直坐标数组)
  • 定制化曲线:mp.plot(…,linestyle=线型, linewidth=线宽, colot=颜色)
  • mp.xlim(左边界, 右边界)
  • mp.ylim(低边界, 顶边界)
  • mp.xticks(刻度位置数组,刻度文本数组)
  • mp.yticks(刻度位置数组,刻度文本数组)

3、设置坐标轴的位置(2步)
1)ax = mp.gca() # 必须先获取当前坐标轴,赋值给ax
2)

  • ax = spines[‘left’].set_position((‘data’, 0)) # 将左边的坐标轴设置到数据坐标的0点
  • ax = spines[‘right’].set_color(‘red’) # 设置坐标轴的颜色为红色,none为无色

4、设置图例(2步)
1)mp.plot(…, label=图例文本) # 设置label属性就是添加图例
2)mp.legend(loc=‘upper left’) # 必须进行图例的位置设置,upper left表示左上角,lower right表示右下角

5、参考效果
11

6、练习代码


import numpy as np
import matplotlib.pyplot as mp

# 默认绘图
# 取从-π到π的999个点,作为横坐标
x = np.linspace(-np.pi, np.pi, 1000)
# x是一个数组,cos方法会将数组中每个元素都求余弦函数
cos_y = np.cos(x)/2
sin_y = np.sin(x)

# 默认绘图,绘制曲线
# mp.plot(x, cos_y)
# mp.plot(x, sin_y)

# 将图像窗口显示出来
# mp.show()



# 自定制绘图
mp.xlim(x.min() * 1.1, x.max() * 1.1)  # 左边界是数组的最小值,右边界是数组的最大值,则就没有白边了
mp.yticks([-1, -0.5, 0.5, 1], ['A','B','C','D'])  # 设置y坐标刻度,文字是ABCD,刻度值是-1, -0.5, 0.5, 1
mp.ylim(sin_y.min() * 1.1, sin_y.max() * 1.1)

mp.xticks([-np.pi, -np.pi*1/2, 0, np.pi*3/4, np.pi],
          [r'$-\pi$', r'$-\frac{\pi}{2}$', '0', r'$\frac{3\pi}{4}$', r'$\pi$'])
# r表示取消python自动转义,$ $包围起来的是格式化转义内容,
# pi表示π,frac{}{}前括号是分子,后括号是分母

# 对坐标轴的处理
ax = mp.gca()
ax.spines['left'].set_position(('data', 0))  # 获取左坐标轴,将左边的坐标轴设置到横坐标为0的位置处
ax.spines['bottom'].set_position(('data', 0))  # 获取右坐标轴
ax.spines['right'].set_color("none")
ax.spines['top'].set_color("none")

mp.plot(x, cos_y, linestyle='--', linewidth=6, color="chartreuse", label=r'$y=\frac{1}{2}cos(x)$')
mp.plot(x, sin_y, linestyle=':', linewidth=2.5, color="steelblue", label=r'$y=sin(x)$')
mp.legend(loc = "upper left")  # 设置图例显示位置为左上角

# 窗口展示
mp.show()

本文地址:https://blog.csdn.net/Viewinfinitely/article/details/107192796

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网