欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-09-14 13:25:05
文章目录一、ndarray属性二、数据可视化一、ndarray属性1、常用属性dtype:数组类型shape:数组维度T:转置视图ndim:维数(一维是1,二维是2,三维是3……)size:元素数itemsize:每个元素的字节数nbytes:数组总字节数(size * itemsieze)flat:扁平迭代器(若不想每行每列访问元素,可以扁平化成1行来访问),扁平化之后可以用下标来取值,用于批量修改值real:复数的实部数组imag:复数的虚部数组数组.tolist():将数组...

一、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、参考效果
Python之数据分析(Numpy的数据可视化、ndarray属性)

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