首页 > 其他分享 >003_Numpy的常见运算

003_Numpy的常见运算

时间:2024-04-06 11:23:51浏览次数:11  
标签:2D 运算 003 print visual np ax array Numpy

1.加减乘除幂运算

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import math
from matplotlib import cm 
def visual_2D(array, vmax, vmin):
    
    fig_width = math.ceil(array.shape[1] * 0.5)
    fig_length = math.ceil(array.shape[0] * 0.5)
    
    fig, ax = plt.subplots(figsize = (fig_width, fig_length))
    
    sns.heatmap(array,
               vmax = vmax,
               vmin = vmin,
               annot = True,
               fmt = '.0f',
               square = True,
               cmap = 'RdYlBu_r',
               linewidth = .5,
               cbar = False,
               xticklabels = False,
               yticklabels = False,
               ax = ax)

def visual_1D(array):
    fix, ax = plt.subplots()
    
    colors = cm.RdYlBu_r(np.linspace(0, 1, len(array)))
    
    for idx,num in enumerate(array):
        circle_idx = plt.Circle((idx, 0 ), 
                                0.5,
                               facecolor = colors[idx],
                               edgecolor = 'w')
        ax.add_patch(circle_idx)
        ax.text(idx, 0, s = str(array[idx]),
                horizontalalignment = 'center',
                verticalalignment = 'center'
               )
    ax.set_xlim(-0.6, 0.6 + len(array))
    ax.set_ylim(-0.6, 0.6)
    ax.axis('off')
    
    ax.set_aspect('equal', adjustable = 'box')
    
def visual_fx(x_array, y_array, step = False):
    fig, ax = plt.subplots(figsize = (5, 5))
    ax.plot([-5, 5], [-5, 5], c = 'r', ls = '--', lw = 0.5)
    
    if step:
        ax.step(x_array,y_array)
    else:
        ax.plot(x_array,y_array)
    ax.set_xlim(-5, 5)
    ax.set_ylim(-5, 5)
    ax.axvline(0, c = 'b')
    ax.axhline(0, c = 'b')
    ax.set_xlabel('x')
    ax.set_ylabel('f(x)')
    plt.grid(True)
    ax.set_aspect('equal', adjustable = 'box')
a = np.arange(-2,3)
b = np.full(5,2)
print('a + b =',a+b)
print('a - b =',a-b)
print('a * b =',a*b)
print('a / b =',a/b)
print('a **b =',a**b)
a + b = [0 1 2 3 4]
a - b = [-4 -3 -2 -1  0]
a * b = [-4 -2  0  2  4]
a / b = [-1.  -0.5  0.   0.5  1. ]
a **b = [4 1 0 1 4]

注:二维数组和多维数组和一维数组的运算法则一致

2.广播原则

2.1一维数组和标量

a = np.arange(-2,3) 
B = 2
print(f'a = {a} b = {B}')
print('a + 2 =',a+B)
print('a - 2 =',a-B)
print('a * 2 =',a*B)
print('a / 2 =',a/B)
print('a **2 =',a**B)
a = [-2 -1  0  1  2] b = 2
a + 2 = [0 1 2 3 4]
a - 2 = [-4 -3 -2 -1  0]
a * 2 = [-4 -2  0  2  4]
a / 2 = [-1.  -0.5  0.   0.5  1. ]
a **2 = [4 1 0 1 4]

2.2一维数组和列向量

一维数组和列向量相加的过程:
a:

0 1 2 3 4
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2

b

0 1 2 3 4
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3

把两个数组扩充到同一维度再相加

a = np.arange(-2,3) 
b = np.arange(1,4)
b = b[:,np.newaxis]
visual_1D(a)
visual_2D(b,4,1)
visual_2D(a+b,4,1)

png

png

png

2.3二维数组和标量

# 二维数组和标量的乘法久相当于:
a = np.array([[j for j in range(-2,3)] for i in range(3)])
b = 2
c = np.full_like(a,b)   # 构造一个全为 b 的数组 然后和 a 数组做运算
a = np.array([[j for j in range(-2,3)] for i in range(3)])
b = 2
visual_2D(a,2,-2)
visual_2D(a+b,2,-2)
visual_2D(a*b,2,-2)

png

png

png

2.4二维数组和一维数组

a = np.array([[j for j in range(-2,3)] for i in range(3)])
b = np.arange(-2,3) 
visual_1D(b)
visual_2D(a * b,2,-2)

png

png

2.4二维数组和列向量

a = np.array([[j for j in range(-2,3)] for i in range(3)])
b = np.arange(0,3) 
b = b[:,np.newaxis]
visual_2D(a, 2, -2)
visual_2D(b, 3,  0)
visual_2D(a + b,2,-2)

png

png

png

3.统计运算

np.random.seed(10)
a = np.random.randint(10,size = (4,5))
visual_2D(a, 10, 0)
a.max() 
visual_1D(a.max(axis = 0))  # axis 用来计算某一个维度最大值
visual_2D(a.max(axis = 1, keepdims = True), 10, 0) # keepdims 用来保持列向量

png

png

png

4.常见函数

幂函数

x = np.linspace(-5,6,100)
y = np.power(x, 2)
visual_fx(x,y)
# y = np.power(x, 3)
# visual_fx(x,y)


png

三角函数

x = np.linspace(-5,6,100)
y = np.sin(x)
# y = np.arcsin(x)
# y = np.cos(x)
# y = np.arccos(x)
# y = np.tan(x)
# y = np.arctan(x)
visual_fx(x,y)

png

绝对值函数

x = np.linspace(-5,6,100)
y = np.abs(x)
visual_fx(x,y)

png

向下取整

x = np.linspace(-5,6,100)
y = np.floor(x)
visual_fx(x,y,step = False)

png

向上取整

x = np.linspace(-5,6,100)
y = np.ceil(x)
visual_fx(x,y,step = True)  # 对比step取true和上一个cell step 取 false的区别

png

指数函数

x = np.linspace(-5,6,100)
y = np.exp(x)
visual_fx(x,y)

png

对数函数

x = np.linspace(-5,6,100)
y = np.log(x)
visual_fx(x,y)
C:\Users\23991\AppData\Local\Temp\ipykernel_13416\2861088069.py:2: RuntimeWarning: divide by zero encountered in log
  y = np.log(x)
C:\Users\23991\AppData\Local\Temp\ipykernel_13416\2861088069.py:2: RuntimeWarning: invalid value encountered in log
  y = np.log(x)

png

标签:2D,运算,003,print,visual,np,ax,array,Numpy
From: https://www.cnblogs.com/baidh/p/18117251

相关文章

  • 001_Numpy数组
    1.手动构造数组importnumpyasnpimportseabornassnsimportmatplotlib.pyplotaspltimportmathfrommatplotlibimportcmdefvisualize_2D(array,vmax,vmin):fig_width=math.ceil(array.shape[1]*0.5)fig_length=math.ceil(array.shape[0]......
  • 【c++小课堂】赋值语句与运算符
    赋值语句 赋值语句的介绍与格式赋值语句,我们在上期已经介绍过了,它就是用来给一个变量or常量一个值的。likethis:intq;q=100;格式:变量or常量=值奇奇怪怪的赋值懒人式赋值1,运算符+'='举个例子:inta;a=5;a+=4;//和a=a+4作用一样可以这样写的运算符有:+,-,*,/,%,>>......
  • Java基础_运算符和分支结构
    今天的内容1.运算符2.分支结构if-else1.运算符1.算术运算符2.关系运算符3.逻辑运算符1.1算术运算符自增和自减​目的:让变量自身加一或者减一语法格式:变量++;先执行当前的操作,然后自身再加1++变量;变量--;--变量;packagecom.qf.a_test;public......
  • 不同类型数据运算
    Voltage_Output*51如果Voltage_Output是float型数据,运算下来是什么类型整数提升是指当参与表达式计算的操作数中有不同的整数类型时,较低精度的整数类型会被隐式提升为较高精度的整数类型。在这里,整数常量51会被隐式提升为整数(int)类型,而不是字符(char)类型。如果 Voltage_Ou......
  • C++:递增递减运算符(16)
    递增递减就是自加1或者自减1,但是还有前置递增,后置递增,前置递减,后置递减,两者的区别也大有不同,接下来就去看一下过程a=1b=1b=++aa=2b=2a=1b=1b=a++a=2b=1a=2b=2b=--aa=1b=1a=2b=2b=a--a=1b=2递增前置递增#include<iostream>usingnamespacestd;intmain()......
  • IQMath定点数运算库性能测试
    基本信息单片机:GD32F303RC,运行主频:120MHz,SRAM:48KB,Flash:256KB,带单精度FPU编译环境:ARMCC5.06update6(build750)由于iq数的底层数据类型是4字节的int32_t因此_iq30~_iq1尽管表示的精度不同,但是运算速度是相同的。下列测试使用_iq15作为被测数据类型,能表示的范围从-65536......
  • 运算符&选择语句
    运算符运算符和表达式概述运算符:对字面量或者变量进行操作的符号;表达式:用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。举例说明:inta=10;intb=20;intc=a+b;+   :是运算符,是算......
  • 计算机组成与系统结构-第3章 运算方法和运算部件 上
    文章目录3.1高级语言和机器指令中的运算3.1.1C语言程序中涉及的运算数据的运算3.1.2MIPS指令中涉及的运算3.2基本运算部件3.2.1全加器和加法器全加器(FullAdder,简称FA)串行进位加法器/行波进位加法器(carryrippleadder,CRA)。3.2.2并行进位加法器3.2.3带标志加法器3......
  • Python机器学习实验 数据处理之Numpy
    一、实验目的1.了解numpy库的基本功能2.掌握Numpy库的对数组的操作与运算二、实验工具:1.Anaconda2.Numpy三、Numpy简介Numpy的英文全称为NumericalPython,指Python面向数值计算的第三方库。Numpy的特点在于,针对Python内建的数组类型做了扩充,支持更高维度的数......
  • 由浅到深认识Go语言(4):常量&运算符
    该文章Github地址:https://github.com/AntonyCheng/go-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况下推荐直......