numpy基础知识

news2024/11/24 13:55:50

文章目录

  • 安装numpy
  • numpy的ndarray对象
    • ndarray 和 list 效率比较
    • 创建一/二维数组
    • ndarray的常用属性
    • 调整数组形状
    • ndarray转list
  • numpy的数据类型
  • 数组的运算
    • 数组和数的计算
    • 数组和数组的计算
  • 数组的轴
  • 数组的索引和切片
  • 数组的与或非和三目运算符
  • numpy的插入、删除、去重
    • 插入
    • 删除
    • 去重
  • numpy的运算公式
  • 数组的拼接和分割
    • 拼接
    • 分割
  • 数组中的nan和inf
  • 数组转置
  • 轴交换和轴滚动
    • 轴交换
    • 轴滚动
  • 读取csv数据

安装numpy

pip install numpy

numpy的ndarray对象

ndarray 和 list 效率比较

import numpy as np
import time
import random

a = []
for i in range(100000000):
    a.append(random.random())
t1 = time.time()
sum1 = sum(a)
t2 = time.time()

b = np.array(a)
t4 = time.time()
sum2 = np.sum(b)
t5 = time.time()
print("list处理一个亿的速度为:  " + str(t2 - t1))
print("numpy处理一个亿的速度为:  " + str(t5 - t4))

在这里插入图片描述
注:numpy的大部分代码都是C语言写的,底层算法设计有优异的性能

创建一/二维数组

import numpy as np

# 创建一维数组
print("方式一------------np.array(list)----------------------")
list = [1, 2, 3]
oneArray = np.array(list)
print(type(oneArray))
print(oneArray)  # [1 2 3]   注意和列表的区别  没有 ,

print("方式二------------np.array([4, 5, 6])----------------------")
oneArray1 = np.array([4, 5, 6])
print(type(oneArray1))
print(oneArray1)

print("方式三---------------np.array(range(10))-------------------")
oneArray2 = np.array(range(10))
print(type(oneArray2))
print(oneArray2)

print("方式四---------------np.arange()-------------------")
oneArray3 = np.arange(0,10,2)
print(type(oneArray3))
print(oneArray3)

# 创建二维数组
print("二维数组--------------------------------------------")
arr = [[1,2,3],[4,5,6],[7,8,9]]
twoArray = np.array(arr)
print(type(twoArray))
print(twoArray)

在这里插入图片描述

ndarray的常用属性

import numpy as np

# 看ndarray的各种属性
list1 = [[1, 2], [3, 4], [5, 6], [7, 8]]

twoArray = np.array(list1)
print(twoArray)

# 获取数组的维度(注意  和函数的参数很像)
print("维度--------------------- ndim ------------------------------------ ")
print(twoArray.ndim)

# 形状(行,列)
print("形状--------------------- shape ------------------------------------ ")
print(twoArray.shape)

# 有多少元素
print("元素个数--------------------- size ------------------------------------ ")
print(twoArray.size)

在这里插入图片描述

调整数组形状

import numpy as np

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

four1 = four  # 直接 = 相当于引用的同一个对象(id)
print(id(four))
print(id(four1))
print(four)
print("---" * 20)

four3 = four.copy() # ndarray.copy()  id不同  不是一个对象
print(id(four))
print(id(four3))
print("---" * 20)

# shape  直接改变 four 和 four1 的形状
four.shape = (3, 2)
print(four)
print(four1)
print("---" * 20)

# reshape 直接返回一个新数组
four2 = four1.reshape(2, 3)
print(four1)  # reshape four1 和 four 不变
print(four2)
print("---" * 20)

# 将多维数组变成一维数组  flatten(order='F/C')
# 'C' 按行展开      'F' 按列展开    默认是 'C'
five = four.reshape((6,), order='C')
print("按行展开为:"+ str(five))
six = four.flatten(order='F')
print("按列展开为:" + str(six))

在这里插入图片描述
在这里插入图片描述

ndarray转list

import numpy as np

# 将ndarray数组转换成python列表
a = np.array([1, 2, 3, 4])
print(a)
print(type(a))
# tolist 快速转换成python列表
list_a = a.tolist()
print(list_a)
print(type(list_a))

在这里插入图片描述

numpy的数据类型

import numpy as np
import random

# dtype 可以减少内存的使用  提高运算效率
# np.int8 - np.int64
f = np.array([1, 2, 3, 4, 5], dtype=np.int16)
print(f.itemsize)  # 占多少字节
print(f.dtype)  # 获取数据类型

# 调整数据类型 astype
print("-------调整数据类型 astype ------------")
f1 = f.astype(np.int32)
print(f1.itemsize)
print(f1.dtype)

print('-' * 50)

# 小数
# float32 精度 6-7位    float64 精度 15-16位
print(round(random.random(), 2))  # round(xxx,y) 保留y位小数
arr = np.array([random.random() for i in range(10)])
print(arr)
print(arr.itemsize)
print(arr.dtype)

print("-------调整数据类型 astype ------------")
arr1 = arr.astype(np.float32)
print(arr1)
print(arr1.itemsize)
print(arr1.dtype)

# 取小数点后两位
print("------数组的所有元素都取小数点后两位 np.round(ndarray,2)---------")
print(np.round(arr, 2))

在这里插入图片描述

数组的运算

数组和数的计算

import numpy as np

# 数组(ndarray)   的加减乘除
t = np.arange(24).reshape((6, 4))
print(t)
print("*" * 20)
t1 = t.tolist()
print(t + 2)
print(type(t1))
# print(t1+2)   # python列表不能 加减乘除
print("*" * 20)
print(t * 2)
print("*" * 20)
print(t // 2)  # 整除 //

在这里插入图片描述
在这里插入图片描述

数组和数组的计算

import numpy as np

# 维度相同的两个数组可以计算
arr1 = np.arange(12).reshape(3, 4)
arr2 = np.arange(12).reshape(3, 4)
print(arr1 + arr2)
print("--" * 30)

# 维度 必须有一个相同且(另一个是0或者1才行) 才能 加减乘除
t1 = np.arange(24).reshape(4, 6)
t2 = np.arange(6).reshape(1, 6)
# t4 = np.arange(6).reshape(6)
# t3 = np.arange(18).reshape(3,6)   不能和 t1运算  只能和t2运算

print(t1 + t2)
# print(t1+t4)   和 t1+t2 相同

在这里插入图片描述

数组的轴

在这里插入图片描述

在这里插入图片描述

import numpy as np

# arange(a,b) 左闭右开
# axis轴   按哪个轴相加  最后的结果shape是去掉该轴剩余的情况
t = np.arange(1, 19).reshape((3, 2, 3))  # 18 = 3 * 2 * 3
print(t)
print("*" * 20)
a = np.sum(t, axis=0)
print(a)
print(a.shape)  # (2, 3)
print("*" * 20)
b = np.sum(t, axis=1)
print(b)
print(b.shape)  # (3, 3)
print("*" * 20)
c = np.sum(t, axis=2)
print(c)
print(c.shape)  # (3, 2)

在这里插入图片描述
在这里插入图片描述

数组的索引和切片

import numpy as np

t = np.arange(24).reshape(4, 6)
print(t)
# 注意t[a:b] a能取到 b取不到
print("*" * 20)
print(t[1])  # 取一行
print("*" * 20)
print(t[1:])  # 取连续的多行
print("*" * 20)
print(t[1:3])  # 取连续多行
# print(t[1:3,:]) # 取连续多行   和上面那句效果一样
print("*" * 20)
print(t[[0, 2, 3]])  # 取不连续的多行  注意两个[[]]
# print(t[[0, 2, 3], :])  # 取不连续的多行  注意两个[[],:]    和上面那句效果一样
print("-" * 60)
print(t[:, 1])  # 取一列
print("*" * 20)
print(t[:, 1:])  # 取连续多列
print("*" * 20)
print(t[:, [0, 2, 4]])  # 取不连续多列
print("-" * 60)
print(t[2, 3])  # 取某行某列的值   注意python列表写法 py[2][3]
print("*" * 20)
print(t[[0, 1, 2], [1, 2, 4]])  # 取多个不连续的值 (0,1)(1,2)(2,4)位置的值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数组的与或非和三目运算符

import numpy as np

t = np.arange(24).reshape(4, 6)
print(t)
t1 = t.copy()
t2 = t.copy()
t3 = t.copy()
t[t < 10] = 0  # 把小于10的值改掉
print(t)
print("*" * 20)
t1[(t1 > 2) & (t1 < 6)] = 0  # 与  两个都满足
print(t1)
t2[(t2 < 2) | (t2 > 6)] = 0  # 或  满足一个就行
print(t2)
t3[~(t3 > 6)] = 0  # 非
print(t3)
print("---" * 20)

# 三目运算符
# np.where(condition, x, y)  满足条件(condition)输出x,不满足条件输出y
score = np.array([[80, 88], [82, 81], [75, 81]])
result = np.where(score > 80, True, False)
print(result)

在这里插入图片描述
在这里插入图片描述

numpy的插入、删除、去重

插入

import numpy as np

# append 在数组末尾添加数据
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
# 当axis轴无定义时,默认为None  返回值是一个一维数组
print(np.append(a, [7, 8, 9]))
print("--" * 20)
# 延轴0添加元素 [[]]
print(np.append(a, [[7, 8, 9]], axis=0))
print("--" * 20)
# 延轴1添加元素  [[]]
print(np.append(a, [[10, 11], [13, 14]], axis=1))
print("----------  下面是insert -------------------------")

# insert 在插入 位置之前  (位置都是从0开始)
b = np.array([[1, 2], [3, 4], [5, 6]])
print(b)
print("未传递axis参数,在插入 位置之前(从左到右数)  输入数组会被展开")
print(np.insert(b, 3, [11, 12]))  # [ 1  2  3 11 12  4  5  6]
print("传递了axis参数,会广播 值数组 来配 输入数组")
print("延轴0广播")
print(np.insert(b, 2, [11, 12], axis=0))
print("延轴1广播")
print(np.insert(b, 1, [4], axis=1))

在这里插入图片描述
在这里插入图片描述

删除

import numpy as np

# 数组中的删除
a = np.arange(12).reshape(3, 4)
print(a)
b = a.copy()
c = a.copy()
print("未传递axis参数,在删除之前输入数组会被展开")
print(np.delete(a, 5))
print("删除每一行中的第二列")
print(np.delete(b, 1, axis=1))
print("删除第三行(下标为2)")
print(np.delete(c, 2, axis=0))

在这里插入图片描述

去重

import numpy as np

# 数组去重 unique
a = np.array([2, 3, 4, 1, 2, 5, 6, 7])
print(a)
print("第一个数组的去重值:")
b = np.unique(a)
print(b)
print("---" * 20)
# return_index  返回 新列表在 旧列表中的位置(下标)
c, indices = np.unique(a, return_index=True)
print(c, indices)
print("---" * 20)
# return_inverse  返回 旧列表元素在 新列表中的位置(下标)
d, indices = np.unique(a, return_inverse=True)
print(d, indices)
print("---" * 20)
# return_counts  返回去重数组中的元素在原数组中出现次数
e, indices = np.unique(a, return_counts=True)
print(e, indices)

在这里插入图片描述

numpy的运算公式

import numpy as np

score = np.array([[80, 88], [12, 81], [75, 80]])
print(score)
print(np.max(score))
print(np.max(score, axis=0))  #  [82 88]
print(np.max(score, axis=1))  #  [88 82 81]
# np.min 最小值类似最大值
print("---" * 20)
# 第一个参数和第二个参数比  返回大的 注:会把原先的列表值改变
print(np.maximum([-2, -1, 0, 1, 2], 0))
# 第一个参数和第二个参数比  返回小的 注:会把原先的列表值改变
print(np.minimum([-2, -1, 0, 1, 2], 0))
# 第一个参数和第二个参数比  返回大的 注:会把原先的列表值改变
print(np.maximum([-2, -1, 0, 1, 2], [1, 2, 0, -1, -2]))
print("---" * 20)

# 求平均值  np.mean
print(np.mean(score))
print("---" * 20)

# 求前缀和
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.cumsum(0))  # 0轴  从上往下加
print(arr.cumsum(1))  # 1轴  从左往右加
print("---" * 20)

# 求最小值索引
print(np.argmin(score, axis=0))  # [1 2]
print(np.min(score, axis=0))  # [12 80]
print("---" * 20)

# 标准差
print(np.std(score, axis=0))

# 极值
print(np.ptp(score, axis=None))

在这里插入图片描述
在这里插入图片描述
注: 求前缀和
在这里插入图片描述

数组的拼接和分割

拼接

import numpy as np

# np.stack() 增加维数

# 数组的拼接
a = np.array([[1, 2], [3, 4]])
b = np.array([[7, 8], [11, 12]])
# 延0轴[[7, 8]] 就行   延1轴[[7, 8], [11, 12]] 才行
print(np.concatenate((a, b), axis=0))
print(np.concatenate((a, b), axis=1))
print("---" * 20)

# 根据轴进行堆叠
print(np.stack((a, b), axis=0))
print(np.stack((a, b), axis=0).shape)

print(np.stack((a, b), axis=1))
print(np.stack((a, b), axis=1).shape)
print("---" * 20)

# 矩阵垂直拼接
v1 = [[0, 1, 2], [3, 4, 5]]
v2 = [[10, 11, 12], [13, 14, 15]]
print("矩阵垂直拼接为:")
print(np.vstack((v1, v2)))
print("矩阵水平拼接为:")
print(np.hstack((v1, v2)))

在这里插入图片描述
在这里插入图片描述

分割

import numpy as np

# 数组的分割
arr = np.arange(9).reshape(3, 3)
print(arr)
print("将数组分成三个大小相等的子数组")
print(np.split(arr, 3))

# 水平分割数组
print(np.hsplit(arr, 3))

# 垂直分割数组
print(np.vsplit(arr, 3))

在这里插入图片描述

数组中的nan和inf

import numpy as np

# inf  正数除以0    -inf  负数除以零   都是无穷大
# nan  -->  not a number
# 注意:  只有float才有 nan和inf
a = np.nan
b = np.inf
print(a, type(a))
print(b, type(b))

t = np.arange(24, dtype=float).reshape(4, 6)
print(t)
t[3, 4] = np.nan
t[2, 4] = np.nan
print(t)
print("--" * 20)
# nan 不相等
print(np.nan == np.nan)  # False
print(np.nan != np.nan)  # True

# inf相等
print(np.inf == np.inf)  # True
print(-np.inf == np.inf)  # False
print(-np.inf == -np.inf)  # True
print(np.inf != np.inf)  # False
print("--" * 20)
print(np.count_nonzero(t))  # 判断非0个数  nan也是非0
print(t != t)
print(np.count_nonzero(t != t))  # 判断nan的个数  因为只有 nan!=nan 为非0 True
# 将nan替换为0
# t[np.isnan(t)] = 0
# # t[t!=t] = 0   # 只有为 True 才进行替换
# print(t)
print("---" * 20)
# 将 nan 替换为这一列的平均值
for i in range(t.shape[1]):
    temp_col = t[:, i]  # 获取当前列数据
    # 判断当前列是否有nan
    nan_num = np.count_nonzero(temp_col != temp_col)
    if nan_num:  # 条件成立说明nan_num不为0
        # 获取不为nan的所有值并且存在一个列表里
        temp_col_not_nan = temp_col[temp_col == temp_col]
        # 将nan替换为这一列的平均值 np.mean
        temp_col[np.isnan(temp_col)] = np.mean(temp_col_not_nan)
        # temp_col[temp_col != temp_col] = np.mean(temp_col_not_nan)
print(t)

在这里插入图片描述
在这里插入图片描述

数组转置

import numpy as np

# 转置和轴滚动
a = np.arange(12).reshape(3, 4)
print(a)
print("np.transpose(ndarrary)  转置后为:")
print(np.transpose(a))
print("***" * 20)
b = np.arange(12).reshape(3, 4)
print(b)
print("ndarrary.T  转置后为:")
print(b.T)

在这里插入图片描述

轴交换和轴滚动

轴交换

t1 = np.arange(24).reshape((2, 3, 4))
print(t1.shape)
print(t1)
print("交换0轴和2轴")
t1 = np.swapaxes(t1, 0, 2)
print(t1.shape)
print(t1)

在这里插入图片描述
在这里插入图片描述

轴滚动

# 轴滚动
# rollaxis(ndarrary, b, start=a)  轴b的位置 必须大于 轴a的位置
# 相当于 b 往 a 的位置滚动
a = np.ones((3, 4, 5, 6))  # ones 都填充为 float的 1.
print(np.rollaxis(a, 2, start=0).shape)  # (5, 3, 4, 6)
print(np.rollaxis(a, 2, start=1).shape)  # (3, 5, 4, 6)
# print(np.rollaxis(a, 1, start=2).shape)  # (3, 4, 5, 6)  轴的大小不对 不滚动

在这里插入图片描述

读取csv数据

在这里插入图片描述

import numpy as np

# numpy 读取数据
us_file_path = "./archive/GBvideos.csv"

# delimiter 分隔符 默认为 空格   unpack 默认为False   文件里不能有任何字符串
t2 = np.loadtxt(us_file_path, delimiter=",", skiprows=True, encoding="utf8")
print(t2)
print(t2.shape)

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/891935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

财务数据分析用什么软件好?财务数据分析的几个重要数据是什么?

财务的数据分析也分很多种的&#xff0c;就拿最粗略的划分来说&#xff0c;也可以分为3大领域—— 财务数据处理类工具财务数据挖掘类工具财务数据可视化工具 01 数据处理类 在财务数据处理这一块儿&#xff0c;不用说&#xff0c;当然是以excel为主力的数据处理类工具—— …

22年电赛B题——具有自动泊车功能的电动车——做题记录以及经验分享

前言 这道题目也是小车类电赛题目&#xff0c;十月份的电赛题&#xff0c;由于之前积累了一些经验&#xff0c;这道题目在做下来的感觉还行,但是我们看题目没有仔细审题&#xff0c;和题目要求有一些些偏差&#xff0c;但是基础大功能还是做出来辽&#xff0c;大家还是可以参考…

SASS 学习笔记 II

SASS 学习笔记 II 上篇笔记&#xff0c;SASS 学习笔记 中包含&#xff1a; 配置 变量 嵌套 这里加一个扩展&#xff0c;嵌套中有一个 & 的用法&#xff0c;使用 & 可以指代当前 block 中的 selector&#xff0c;后面可以追加其他的选择器。如当前的 scope 是 form&a…

zotero在不同系统的安装(win/linux)

1 window系统安装 zotero 官网&#xff1a; https://www.zotero.org/ 官方文档 &#xff1a;https://www.zotero.org/support/ (官方)推荐常用的插件: https://www.zotero.org/support/plugins 入门视频推荐&#xff1a; Zotero 文献管理与知识整理最佳实践 点击 exe文件自…

30.Netty源码服务端启动主要流程

highlight: arduino-light 服务端启动主要流程 •创建 selector •创建 server socket channel •初始化 server socket channel •给 server socket channel 从 boss group 中选择一个 NioEventLoop •将 server socket channel 注册到选择的 NioEventLoop 的 selector •…

如何利用 ChatGPT 进行自动数据清理和预处理

推荐&#xff1a;使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 ChatGPT 已经成为一把可用于多种应用的瑞士军刀&#xff0c;并且有大量的空间将 ChatGPT 集成到数据科学工作流程中。 如果您曾经在真实数据集上训练过机器学习模型&#xff0c;您就会知道数据清理和预…

Linux debian12解压和压缩.rar文件教程

一、Debian12安装rar命令 sudo apt install rar二、使用rar软件 1.解压文件 命令格式&#xff1a; rar x 文件名.rar实力测试&#xff1a; [rootdoudou tmp]# rar x test.rar2.压缩文件 test是一个文件夹 命令格式&#xff1a; rar a 文件名.rar 文件夹名实例测试&#x…

Java的AQS框架是如何支撑起整个并发库的

如何设计一个抽象队列同步器 引言AQS需要解决哪些场景下的问题互斥模式获取锁抢锁失败入队 释放锁小总结 共享模式获取共享资源释放共享资源唤醒丢失问题 小总结 混合模式获取写锁释放写锁获取读锁读锁是否应该阻塞 释放读锁小总结 栅栏模式等待递减计数 条件变量模式等待条件成…

如何将图片应用于所有的PPT页面?

问题&#xff1a;如何快速将图片应用到所有PPT页面&#xff1f; 解答&#xff1a;有两种方法可以解决这个问题。第一种用母板。第二种用PPT背景功能。 解决有时候汇报的时候&#xff0c;ppt中背景图片修改不了以及不知道如何查找&#xff0c;今天按照逆向过程进行操作 方法1…

Intelij IDEA 配置Tomcat解决Application Server不显示的问题

今天搭建war工程时部署项目发现&#xff0c;IDEA的控制台没有Application Servers&#xff0c;在网上查了一下&#xff0c;总结几个比较好的解决方法&#xff0c;为了方便自己和其他人以后碰到相同的问题&#xff0c;不再浪费时间再次寻找解决办法。 Intelij IDEA 配置Tomcat时…

PyMuPDF`库实现PDF旋转功能

本文介绍了一个简单的Python应用程序&#xff0c;用于将PDF文件转换为旋转90度的PDF文件。主要用于csdn网站中导出的博客pdf是横向的&#xff0c;看起来不是很方便&#xff0c;才想到用python编制一个将pdf从横向转为纵向的功能。 功能 该PDF转换工具具有以下功能&#xff1a…

pdf转word最简单方法~

pdf转word最简单方法&#xff01;pdf转word最简单方法我们都知道&#xff0c;PDF文件是一种只读文件格式&#xff0c;无法按照需求对PDF文件进行更改与编辑&#xff0c;从而影响到了PDF文件的使用。所以&#xff0c;我们需要将PDF文件转换为word文档&#xff0c;以此来保证文件…

js 小程序限流函数 return闭包函数执行不了

问题&#xff1a; 调用限流 &#xff0c;没走闭包的函数&#xff1a; checkBalanceReq&#xff08;&#xff09; loadsh.js // 限流 const throttle (fn, context, interval) > {console.log(">>>>cmm throttle", context, interval)let canRun…

Webgl 存储限定符attribute、gl.getAttribLocation、gl.vertexAttrib3f及其同族函数和矢量版本的介绍

目录 attribute变量规范 获取attribute变量的存储位置 gl.getAttribLocation&#xff08;&#xff09;函数的规范&#xff1a; 向attribute变量赋值 gl.vertexAttrib3f&#xff08;&#xff09;的规范。 gl.vertexAttrib3f&#xff08;&#xff09;的同族函数 示例代码…

达梦数据库8用户管理以及忘记sysdba密码修改办法

达梦数据库8用户管理&达梦数据库v8忘记sysdba密码&#xff0c;修改办法。 达梦数据库8用户管理1.创建用户的语法:2.锁定/解锁用户3.修改用户的密码&#xff08;同样要符合密码策略PWD_POLICY&#xff09;4.修改用户默认表空间5.删除用户6.同样地可以使用DM管理工具进行创建…

基于docker搭建pytest自动化测试环境(docker+pytest+jenkins+allure)

pytest搭建自动化测试环境&#xff08;dockerpytestjenkinsallure&#xff09; 这里我以ubuntu18为例 如果有docker环境&#xff0c;可以直接拉取我打包好的镜像docker pull ziyigun/jenkins:v1.0 1 搭建Docker 1.1 安装docker # 配置docker安装环境 sudo apt-get install ap…

js 闭包和 垃圾回收机制

js 闭包和 垃圾回收机制 闭包里面的变量 是局部变量 但是 由于一直使用&#xff0c;引用&#xff0c;没有被回收 所以相当于 全局变量

Docker案例分析:创建并运行一个Redis容器

步骤一&#xff1a;到DockerHub搜索Redis镜像 步骤二&#xff1a;查看Redis镜像文档中的帮助信息 步骤三&#xff1a;利用docker run命令运行一个Redis容器 可以看到第二行的命令是支持数据持久化的创建容器命令&#xff0c;但是我们使用的命令如下&#xff1a; docker run -…

Vue3 使用json编辑器

安装 npm install json-editor-vue3 main中引入 main.js 中加入下面代码 import "jsoneditor";不然会有报错&#xff0c;如jsoneditor does not provide an export named ‘default’。 图片信息来源-github 代码示例 <template><json-editor-vue class…

ssm+vue校园美食交流系统源码

ssmvue校园美食交流系统源码和论文026 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多商…