数据可视化(三):Pandas技术的基本操作案例,让你快速掌握数据处理技术

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊!

喜欢我的博客的话,记得点个红心❤️和小关小注哦!您的支持是我创作的动力!"

数据可视化(三):Pandas技术的基本操作案例,让你快速掌握数据处理技术

目录

import numpy as np

1. 创建一个范围为[0,1]的长度为12的等差数列

# 编程
arrary = np.linspace(0,1,12,True)
display(arrary)

2. numpy排序函数有哪些?功能?

以下是几个主要的排序函数及其功能:

# 1. numpy.sort():
(1)功能:对数组进行排序,返回排好序的数组副本。
(2)参数:
	a:待排序数组。
	axis:指定排序的轴。如果没有指定,则按最后一个轴排序。例如,axis=0表示按列排序,axis=1表示按行排序。
	kind:指定排序算法,默认为'quicksort'(快速排序),还可以选择'mergesort'(归并排序)或'heapsort'(堆排序)。
	order:如果数组包含字段,则用于指明排序的字段。
(3)示例:对二维数组按列排序或按行排序。

# 2. numpy.argsort():
(1)功能:先对数组进行排序,然后提取排序后的数组索引,以数组形式返回。原数组不会被修改,通过索引可以得到排序结果。
(2)示例:得到排序后元素的原始索引。

# 3. numpy.lexsort():
(1)功能:用于对多个序列进行排序,类似于SQL中的ORDER BY多个字段。可以想象成对电子表格进行排序,每一列代表一个序列,越后面的列优先级越高。原数组不会被修改,该函数提取排序后的数组索引,以数组形式返回,通过索引可以得到排序结果。
(2)示例:对多个数组或矩阵的列进行排序。

	除了上述的排序函数,NumPy还提供了其他与排序相关的函数,如numpy.nonzero()(返回输入数组中非零元素的索引)和numpy.where()(返回输入数组中满足给定条件的元素的索引)等。

	这些排序函数使得在NumPy中对数组进行排序变得非常便捷和高效。需要注意的是,直接排序函数(如numpy.sort())会返回排序后的数组副本,而间接排序函数(如numpy.argsort()和numpy.lexsort())则返回排序后的索引数组,原数组不会被修改。

2.1. 使用numpy.sort函数可以对数组进行排序,并返回排序好的数组。

numpy.sort(a, axis=-1, kind=None, order=None)

- a : 要排序的数组;
- axis : 按什么轴进行排序,默认按最后一个轴进行排序;
- kind :排序方法,默认是快速排序;
- order : 当数组定义了字段属性时,可以按照某个属性进行排序;

ndarray.sort(axis=-1, kind=None, order=None)

与numpy.sort()类似,在自身数组进行排序,很影响自身

arr = np.array([[1,8,2,4],
                [4,5,1,3]])

# 默认按最后一个轴排序,这里按行排序
np.sort(arr)

# 轴设为0,即按列排序
np.sort(arr,axis=0)

# 轴设为1,即按行排序
np.sort(arr,axis=1)

下面试下按照字段属性进行排序,需要用到order参数。

# 自定义字段类型
dtype = [('Name', 'S10'), ('Height', float), ('Age', int)]
# 各字段值
values = [('Li', 1.8, 41), ('Wang', 1.9, 38),('Duan', 1.7, 38)]
# 创建数组
arr = np.array(values, dtype=dtype)
arr

# 按照属性Height进行排序,此时参数为字符串          
np.sort(arr, order=['Height'])     

# 先按照属性Age排序,如果Age相等,再按照Height排序,此时参数为列表     
np.sort(arr, order=['Age', 'Height']) 

2.2. numpy.argsort函数用于将数组排序后,返回数组元素从小到大依次排序的所有元素索引

使用方法(和sort类似)

numpy.argsort(a, axis=-1, kind=None, order=None)

- a : 要排序的数组;
- axis : 按什么轴进行排序,默认按最后一个轴进行排序;
- kind :排序方法,默认是快速排序;
- order : 当数组定义了字段属性时,可以按照某个属性进行排序;
arr = np.array([3, 1, 2])

# 获取排序后的索引
np.argsort(arr)
arr = np.array([[0, 3], [2, 2]])

# 默认按照最后一个轴进行排序,即行排序
# 获取排序后的索引
np.argsort(arr)

2.3. numpy.lexsort函数用于按照多个条件(键)进行排序,返回排序后索引

numpy.lexsort(keys, axis=-1)

- keys :序列或元组,要排序的不同的列;
- axis :沿指定轴进行排序;
  • 给定多个排序键,lexsort返回一个整数索引数组,该数组描述按多个列排序的顺序。
  • 序列中的最后一个键用于主排序顺序,倒数第二个键用于辅助排序顺序,依此类推。
# 英语成绩
english = [90,85,95,80]
# 数学成绩
math = [80,95,90,85]
# 总成绩
total = [170,170,185,165]

# 排序,获取索引
'''
先按总成绩total进行排序,
再按数学成绩math进行排序,
最后按英语成绩进行排序。
可以看到total里有两个170,
这时候就按下一级math排序,
最后获取排序后的索引
'''
np.lexsort((english, math, total))
# 也可以直接传入数组
score = np.array([[90,85,95,80],[80,95,90,85],[170,170,185,165]])

np.lexsort(score)

3. 创建一个10x10的ndarray对象,满足矩阵边界为1,里面全为0

# 编程
import numpy as np  
  
def create_boundary_matrix(size):  
    # 创建一个size x size的矩阵,所有元素初始化为0  
    matrix = np.zeros((size, size), dtype=int)  
      
    # 将矩阵的边界设置为1  
    matrix[0, :] = 1  # 设置第一行为1  
    matrix[-1, :] = 1 # 设置最后一行为1  
    matrix[:, 0] = 1  # 设置第一列为1  
    matrix[:, -1] = 1 # 设置最后一列为1  
      
    return matrix  
  
# 使用函数创建一个10x10的矩阵  
boundary_matrix = create_boundary_matrix(10)  
display(boundary_matrix)

4. 将数组arr中所有奇数置为-1对应的语句是

# 编程
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]  # 示例数组  
arr = [-1 if num % 2 != 0 else num for num in arr]  
print(arr)

5. 根据要求编写代码

1. 利用numpy提供的函数创建一个多维随机数组,范围0到12,6个元素,两行3列
2. 打印数组所占的内存大小
3. 打印数组根据第一列进行排序后的结果
4. 假设不清楚数组内的数据大小,从数组中找出与给定值5最接近的值 (提示:np.abs())
# 编程
import numpy as np  

# 1. 利用numpy提供的函数创建一个多维随机数组,范围0到12,6个元素,两行3列
# 生成一个两行三列,元素取值范围在0到12之间的随机整数数组  
# 注意:numpy.random.randint不包括上界,因此使用13作为上界  
arr = np.random.randint(0, 13, size=(2, 3))  
print("原始随机数组:")  
print(arr)

# 2. 打印数组所占的内存大小
# 方法一:
# 打印数组所占用的内存大小(以字节为单位)  
memory_size = arr.size * arr.itemsize  
print("数组所占内存大小(字节):", memory_size)

# 方法二:
import sys
print("数组所占内存大小(字节):", sys.getsizeof(arr))

# 3. 打印数组根据第一列进行排序后的结果
# 使用lexsort先根据第一列排序,这里我们实际上只需要第一列进行排序  
# 但由于lexsort接收的是一个元组,即使我们只需要根据一列排序,也需要以元组的形式传入  
sorted_indices = np.lexsort((arr[:, 0],))  
# 使用得到的索引对原数组进行排序  
sorted_arr = arr[sorted_indices]  
print("根据第一列排序后的数组:")  
print(sorted_arr)

# 4. 假设不清楚数组内的数据大小,从数组中找出与给定值5最接近的值 (提示:np.abs())
# 假设要找的值为5  
target_value = 5  
  
# 计算数组中每个元素与给定值的差的绝对值  
abs_diff = np.abs(arr - target_value)  
  
# 找到最小差的索引  
min_diff_index = np.argmin(abs_diff)  
  
# 找到与给定值最接近的元素  
closest_value = arr.flat[min_diff_index]  
  
print("与给定值5最接近的值是:", closest_value)

小知识:np.info()函数可以查阅numpy文档

例如:

np.info(np.add)

6. 请创建一组值为 0 到 9 (包括9)的 ndarray 数组,并指定为 int8 类型,然后将其改为布尔类型,以及float16类型

# 编程
import numpy as np  
  
# 创建一个值为 0 到 9 的 ndarray 数组,并指定为 int8 类型  
arr_int8 = np.arange(10, dtype=np.int8)  
print("原始 int8 类型数组:")  
print(arr_int8)  
  
# 将数组改为布尔类型  
# 在这里,非零元素会被转换为 True,零元素会被转换为 False  
arr_bool = arr_int8.astype(np.bool_)  
print("布尔类型数组:")  
print(arr_bool)  
  
# 将数组改为 float16 类型  
arr_float16 = arr_int8.astype(np.float16)  
print("float16 类型数组:")  
print(arr_float16)

7. 下列有一组数据,请使用一行代码同时获取 2.7、42、36 这三个元素:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫

[3.0833, 2.7, 3.0833, 2.5, 2.75, 3.5, 3.9167, 42, 36, 0.75]

# 编程
data = [3.0833, 2.7, 3.0833, 2.5, 2.75, 3.5, 3.9167, 42, 36, 0.75]  
target_values = [val for val in data if val in [2.7, 42, 36]]

target_values

8. 求数组 arr中所有元素的绝对值、四舍五入值、最大值和最小值:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

arr = np.array([-3.2, 53, -3.6, 68, -4.5, 6.8571, -1.56, 8.4, -7])

# 编程
arr = np.array([-3.2, 53, -3.6, 68, -4.5, 6.8571, -1.56, 8.4, -7])

# 计算所有元素的绝对值  
absolute_values = [abs(x) for x in arr]  
print("绝对值:", absolute_values)  
  
# 计算所有元素的四舍五入值  
rounded_values = [round(x) for x in arr]  
print("四舍五入值:", rounded_values)  
  
# 计算最大值  
max_value = max(arr)  
print("最大值:", max_value)  
  
# 计算最小值  
min_value = min(arr)  
print("最小值:", min_value)

9. 数组A和B如下,在不创建新数组的情况下,如何计算 (A+B)/(A-B) 的值?‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A = np.ones(3) * 1

B = np.ones(3) * 2

提示: np.add(out=), np.subtract(out=), np.divide(out=)

# 编程
import numpy as np  
  
# 初始化数组 A 和 B  
A = np.ones(3) * 1  
B = np.ones(3) * 2  
  
# 计算 (A+B) 并保存在 A 中  
np.add(A, B, out=A)  
  
# 计算 (A-B) 并保存在 B 中(此时 A 已经被 (A+B) 覆盖)  
np.subtract(A, B, out=B)  
  
# 计算 (A+B)/(A-B) 并保存在 A 中(此时 A 是 (A+B) 的结果,B 是 (A-B) 的结果)  
np.divide(A, B, out=A)  
  
# A 现在包含了 (A+B)/(A-B) 的结果  
print(A)

10. 计算半径分别为 1,2,3, … , 30的30个圆面积,结果保留两位小数,并以ndarray形式输出。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

圆面积公式为:S=πr²。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

π 值可以调用 np.pi 获得。

# 编程
import numpy as np  
  
# 生成半径数组  
radii = np.arange(1, 31)  # 从 1 到 30 的整数数组  
  
# 计算面积  
areas = np.pi * radii ** 2  
  
# 保留两位小数  
areas_rounded = np.round(areas, 2)  
  
# 输出结果  
print(areas_rounded)

11. 下面是一组学生的数学成绩,请筛选得分大于 60 的人数:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

np.random.seed(2023)
arr = np.random.randint(0, 100, 1000)

# 编程
import numpy as np  
  
np.random.seed(2023)  
arr = np.random.randint(0, 100, 1000)  # 生成包含1000个随机整数(0到99之间)的数组  
  
# 使用布尔索引筛选得分大于60的元素  
scores_above_60 = arr[arr > 60]  
  
# 计算得分大于60的人数  
count_above_60 = len(scores_above_60)  
  
print("得分大于60的人数是:", count_above_60)

12. 下列是一组学生的身高体重数据‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

height = np.array([1.73, 1.86, 1.56, 1.69, 1.53, 1.89, 1.87, 1.53, 1.66, 1.53])

weight = np.array([51, 64, 75, 58, 67, 59, 62, 70, 62, 59])

- 问1:请输出身体质量指数 (BMI)的排序结果
- 问2:请输出身体质量指数 (BMI)大于正常(>24)的元素数量

BMI = 体重(公斤)/身高²

# 编程
import numpy as np

height = np.array([1.73, 1.86, 1.56, 1.69, 1.53, 1.89, 1.87, 1.53, 1.66, 1.53])
weight = np.array([51, 64, 75, 58, 67, 59, 62, 70, 62, 59])

# 计算BMI
bmi = weight / (height ** 2)

# 问1: 输出BMI的排序结果
sorted_bmi_indices = np.argsort(bmi)
sorted_bmi = bmi[sorted_bmi_indices]
print("BMI的排序结果:", sorted_bmi)

# 问2: 输出BMI大于正常(>24)的元素数量
count_over_24 = np.sum(bmi > 24)
print("BMI大于正常(>24)的元素数量:", count_over_24)

13. 定义RGB结构

红色在RGB颜色模式中所对应的值就是255,0,0;绿色在RGB颜色模式中所对应的值就是0,255,0;蓝色在RGB颜色模式中所对应的值就是0,0,255。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

获取用户输入的信息,编写代码定义一个复杂的dtype结构,数组元素包含三部分,分别为R、G、B的颜色值。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

dtype结构元素名称分别为R、G、B类型的无符号8位整型,输出颜色值数组。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

输入示例‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

[(254, 253, 252), (0, 0, 0), (255, 255, 255)]

输出示例‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

array([(254, 253, 252), ( 0, 0, 0), (255, 255, 255)],
dtype=[(‘R’, ‘u1’), (‘G’, ‘u1’), (‘B’, ‘u1’)])

# 编程
import numpy as np

# 定义dtype结构
color_dtype = np.dtype([('R', 'u1'), ('G', 'u1'), ('B', 'u1')])

# 输入示例数据
colors = [(254, 253, 252), (0, 0, 0), (255, 255, 255)]

# 创建颜色值数组
color_array = np.array(colors, dtype=color_dtype)

color_array

14. 创建一个8 x 8棋盘形状数组,输出如下样式:

[[0 1 0 1 0 1 0 1]

[1 0 1 0 1 0 1 0]

[0 1 0 1 0 1 0 1]

[1 0 1 0 1 0 1 0]

[0 1 0 1 0 1 0 1]

[1 0 1 0 1 0 1 0]

[0 1 0 1 0 1 0 1]

[1 0 1 0 1 0 1 0]]

# 编程
import numpy as np

# 创建一个8 x 8的棋盘形状数组
chessboard = np.zeros((8, 8), dtype=int)
chessboard[1::2, ::2] = 1  # 奇数行,偶数列赋值为1
chessboard[::2, 1::2] = 1  # 偶数行,奇数列赋值为1

print(chessboard)

15. 下面是一个数组,根据二维数组第二列的值,将数组升序排列。

np.random.seed(123)

n = np.random.randint(0, 10, (3, 4))

输出示例‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

[[0 1 9 0]

[2 2 6 1]

[3 9 6 1]]

# 编程
import numpy as np

np.random.seed(123)
n = np.random.randint(0, 10, (3, 4))

sorted_indices = np.argsort(n[:, 1])  # 根据第二列的值获取升序排序的索引
sorted_n = n[sorted_indices]  # 使用索引重新排序原始数组

print(sorted_n)

16. 在数组arr中交换第一列和第二列

数组有如下代码生成:

arr = np.arange(9).reshape(3,3)

# 编程
import numpy as np

arr = np.arange(9).reshape(3, 3)

print("原来的数组:\n",arr)
# 交换第一列和第二列
arr[:, [0, 1]] = arr[:, [1, 0]]

print("变化后的数组:\n", arr)

17. 获取下面数组a中前5个最大值

数组如下:

np.random.seed(100)

arr = np.random.uniform(1,50, 20)

# 编程
import numpy as np

np.random.seed(100)
arr = np.random.uniform(1, 50, 20)

print("原来的数组:",arr)

# 找出前5个最大值的索引
max_indices = np.argsort(arr)[-5:]

# 获取前5个最大值
top5_max_values = arr[max_indices]

print(top5_max_values)

18. 下面数组按行计算去重后的元素数量(难)

数组如下:

np.random.seed(100)

arr = np.random.randint(1, 11, size=(6, 10))

# 编程
import numpy as np

np.random.seed(100)
arr = np.random.randint(1, 11, size=(6, 10))

# 定义函数计算每一行去重后的元素数量
def count_unique_elements(row):
    unique_elements = set(row)
    return len(unique_elements)

# 应用函数到每一行,编写的函数没有传参的效果
unique_counts = np.apply_along_axis(count_unique_elements, axis=1, arr=arr)

print(unique_counts)

19. 对于两个随机数组A和B,检查它们是否相等

A = np.arange(1, 5)

B = np.arange(3, 7)

提示:np.allclose比较两个array是不是每一元素都相等

# 编程
import numpy as np

A = np.arange(1, 5)
B = np.arange(3, 7)

print("A数组:",A)
print("B数组:",B)
are_equal = np.allclose(A, B)
print(are_equal)

20. 检查一个二维数组是否有空列(全0列)?

提示:ndarray.any()方法

以下是数组:

arr = np.random.randint(0, 3, (3, 10))

# 编程
import numpy as np  
  
# 假设我们有一个3x10的随机整数数组,范围在0到2之间  
arr = np.random.randint(0, 3, (3, 10))  
  
# 使用any方法沿着行的方向(axis=0)检查每一列是否至少有一个非零元素  
has_non_zero = arr.any(axis=0)  
  
# 找出哪些列是全0的(即any方法返回False的列)  
empty_columns = np.where(~has_non_zero)[0]  
  
# 输出空列的索引  
print("空列的索引:", empty_columns)  
  
# 如果要检查是否有空列,只需检查empty_columns数组是否为空  
has_empty_columns = len(empty_columns) > 0  
print("是否有空列:", has_empty_columns)

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值