numpy及ndarray基础

NumPy与ndarray简介 一、NumPy简介 NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括: 一个强大的N维数组对象ndrray;比较成熟的(广播)函数库;用于整合C/C++和Fortran代码的工具包;实用的线性代数、傅里叶变换和随机数生成函数 NumPy的优点: 对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多;NumPy中 阅读详情

前言

Numpy是一个开源的Python科学计算基础库,也是目前Python用于科学计算和数据分析的最基础的第三方库,本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程ndarray的使用基础进行整理和总结。

numpy简介

Numpy提供了众多功能,主要包含如下:

  1. Numpy提供了一个非常强大的N维数组对象ndarray(数组);
  2. 提供一个具有广播功能的函数,可用于数组之间的计算;
  3. 提供了线性代数,傅里叶变换,随机数生成等功能用于科学计算。
    可以说Numpy是SciPy,Pandas等数据处理或科学计算库的基础。

虽然Python中已经具有类似功能的列表和元组供用户使用,为什么还需要Numpy呢?使用Numpy中N维数组对象ndarray代替Python中的列表/字典等进行科学计算的优势在于:

  • 数组运算可以去掉元素之间所需要的循环语句,使一维向量更像单个数据;
  • 通过设置专门的数组对象,经过优化,可以提升这类应用的运算速度;
  • 在科学计算中,一个维度的所有数据类型往往相同,数组对象采用相同的数据类型,有助于节省运算和存储空间;

ndarray是一个多维数组对象,由两部分构成:

  • 实际的数据;
  • 描述这些数据的元数据(数据维度,数据类型等);

ndarray 的两个基本概念:

  • 轴(axis):保存数据的维度;
  • 秩(rank):轴的数量;

ndarray基本运算属性

ndarray的基本运算属性:

  • .ndim:表示秩,即轴的数量或者维度的数量;
  • .shape:ndarray对象的尺度,对于矩阵,n行m列;
  • .size:ndarray对象元素的个数,相当于.shape中n*m的值
  • .dtype:ndarray对象的元素类型;
  • .itemsize:ndarray对象中每个元素的大小,以字节为单位。

ndarray实例如下:

import numpy as np
a = np.array([[1,2,3,4],
              [5,6,7,8]])
a.ndim
2
a.shape
(2, 4)
a.size
8
a.dtype
dtype('int32')
a.itemsize
4

此处a.itemsize = 4表示数据a中每个元素由4个字节构成。

非同质对象

ndarray数组可以由非同质对象构成,但是非同质对象无法有效发挥Numpy的优势,应该尽量避免使用,如下例所示:

b = np.array([[1,2,3,4,5],
             [6,7,8,9]])
b.shape
(2,)
b.dtype
dtype('O')
b
array([list([1, 2, 3, 4, 5]), list([6, 7, 8, 9])], dtype=object)
b.size
2

由上可以,当ndarray不同质时,元素为对象类型(Object)。

ndarray的创建方法

从Python中的列表,元组等类型创建ndarray数组;

从列表类型创建
x = np.array([1,2,3,4])
print(x)
[1 2 3 4]
从元组类型创建
y = np.array((1,2,3,4))
print(y)
[1 2 3 4]
从列表和元组混合类型创建
z = np.array([[1,2],
            [3,4],
            (5,6)])
print(z)
[[1 2]
 [3 4]
 [5 6]]

使用NumPy中的函数创建ndarray数组,如:arange,ones,zeros等;

np.arange:类似range()函数,返回ndarray类型,元素从0到n-1

np.arange(8)
array([0, 1, 2, 3, 4, 5, 6, 7])

np.ones(shape):根据shape生成一个全1数组,shape是元组类型

np.ones((3,4))
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

np.zeros(shape):根据shape生成一个全0数组,shape是元组类型

np.zeros((2,3))
array([[0., 0., 0.],
       [0., 0., 0.]])

np.full(shape,val):根据shape生成一个数组,所有元素值都是val

np.full((3,5),3.5)
array([[3.5, 3.5, 3.5, 3.5, 3.5],
       [3.5, 3.5, 3.5, 3.5, 3.5],
       [3.5, 3.5, 3.5, 3.5, 3.5]])

np.eye(n):创建一个正方的n*n单位矩阵,对角线为1,其余为0

np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

np.ones_like(a):根据数组a的形状生成一个全为1的数组;
np.zeros_like(a):根据数组a的形状生成一个全为0的数组;
np.full_like(a,val):根据数组a的形状生成一个数组,每个元素的值都是val;

使用其他函数创建numpy数组

np.linspace(a,b,c):根据起止数据等间地填充数据,形成数组,a表示起始位置,b是最后一个元素的值,c是元素个数;

d = np.linspace(1,15,5)
d
array([ 1. ,  4.5,  8. , 11.5, 15. ])
e = np.linspace(1,15,5,endpoint=False)
e
array([ 1. ,  3.8,  6.6,  9.4, 12.2])

endpoint表示是否取最后一个元素的值,False表示舍去。
np.concatenate():将两个或多个数组合并成为一个新的数组;

f = np.concatenate((d,e))
f
array([ 1. ,  4.5,  8. , 11.5, 15. ,  1. ,  3.8,  6.6,  9.4, 12.2])

从字节流(raw bytes)中创建ndarray数组;

从文件中读取特定格式,创建ndarray数组;

ndarray的数组变换

对于创建的ndarray数组,可以对其进行维度变换和元素类型变换。

维度变换

.reshape(shape):不改变数组元素,返回一个shape形状的数组,原数组不变;

a = np.ones((2,3,4))
a.reshape((3,8))
array([[1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.]])
a
array([[[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]],

       [[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]]])

.resize(shape):与.reshape()功能一致,但是修改原数组;

a.resize((3,8))
a
array([[1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.]])

.swapaxes(ax1,ax2):将数组中n个维度中的指定两个维度互换;
.flatten():对数组进行降维,返回折叠后的一维数组,原数组不变;

a.flatten()
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1.])

类型变换

new_a = a.astype(new_type)
b = np.ones((2,3),dtype = np.int)
b
array([[1, 1, 1],
       [1, 1, 1]])
b.astype(np.float)
array([[1., 1., 1.],
       [1., 1., 1.]])

ndarray数组向列表的转换

a.tolist()

b.tolist()
[[1, 1, 1], [1, 1, 1]]

ndarray数组的操作(索引和切片)

定义

索引:获取数组中特定元素的过程
切片:获取数组元素子集的过程

一维数组的索引和切片

一维数组的索引和切片与列表类似

a = np.array([1,2,3,4,5,6,7,8,9])
a[2]
3
a[1:7:2]
array([2, 4, 6])

多维数组索引和切片

a = np.arange(24).reshape(2,3,4)
a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
a[1,2,3]
23
a[0,1,3]
7
a[-1,-2,-3]
17

切片

a[:,1,-1]
array([ 7, 19])
a[:,1:3,:]
array([[[ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[16, 17, 18, 19],
        [20, 21, 22, 23]]])
a[:,:,::2]#每个维度可以使用步长跳跃切片
array([[[ 0,  2],
        [ 4,  6],
        [ 8, 10]],

       [[12, 14],
        [16, 18],
        [20, 22]]])

ndarray数组的运算

数组与标量的运算

等价于数组中的每一个元素都与这个元素进行运算。

a = np.arange(24).reshape(2,3,4)
a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
a.mean()
11.5
a = a/a.mean()
a
array([[[0.        , 0.08695652, 0.17391304, 0.26086957],
        [0.34782609, 0.43478261, 0.52173913, 0.60869565],
        [0.69565217, 0.7826087 , 0.86956522, 0.95652174]],

       [[1.04347826, 1.13043478, 1.2173913 , 1.30434783],
        [1.39130435, 1.47826087, 1.56521739, 1.65217391],
        [1.73913043, 1.82608696, 1.91304348, 2.        ]]])

对ndarray中的数据执行元素级运算的函数

  • 计算各元素的绝对值:np.abs(x),np.fabs(x)
  • 计算数组各元素的平方根:np.sqrt(x)
  • 计算数组各元素的平方:np.square(x)
  • 计算数组各元素的自然对数,10底对数和2底对数:np.log(x),np.log10(x),np.log2(x)
  • 计算数组各元素的ceiling值(不超过元素的整数值)或floor值(小于该元素的最大整数值):np.ceil(x),np.floor(x)
  • 计算数组各元素的四舍五入值:np.rint(x) 将数组各元素的小数和整数部分以两个独立数组形式返回:np.modf(x)
a
array([[[0.        , 0.08695652, 0.17391304, 0.26086957],
        [0.34782609, 0.43478261, 0.52173913, 0.60869565],
        [0.69565217, 0.7826087 , 0.86956522, 0.95652174]],

       [[1.04347826, 1.13043478, 1.2173913 , 1.30434783],
        [1.39130435, 1.47826087, 1.56521739, 1.65217391],
        [1.73913043, 1.82608696, 1.91304348, 2.        ]]])
c,d = np.modf(a)
c
array([[[0.        , 0.08695652, 0.17391304, 0.26086957],
        [0.34782609, 0.43478261, 0.52173913, 0.60869565],
        [0.69565217, 0.7826087 , 0.86956522, 0.95652174]],

       [[0.04347826, 0.13043478, 0.2173913 , 0.30434783],
        [0.39130435, 0.47826087, 0.56521739, 0.65217391],
        [0.73913043, 0.82608696, 0.91304348, 0.        ]]])
d
array([[[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]],

       [[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 2.]]])
  • 计算数组各元素的普通型和双曲型三角函数:np.cos(x)/np.cosh(x),np.sin(x)/np.sinh(x),np.tan(x)/np.tanh(x)
  • 计算数组中各元素的指数值:np,exp(x)
  • 计算数组中各元素的符号值:np.sign(x),大于0取1,等于0取0,小于0取-1,以数组形式返回
a = np.array([-1,0,1])
np.sign(a)
array([-1,  0,  1])

总结

  1. 数据的维度:一维,二维,多维;
  2. ndarray的类型属性,创建和变换;
  3. 数组的索引和切片;
  4. 数组的运算;
    可以看到,numpy中涉及到的函数和语法较多,我们实际应用中并不需要对其进行死记硬背,只需要在使用某个函数时,进行查表,明白使用的原理和规则即可。
numpy基础——ndarray.shape numpy.ndarray.shapendarray.shapeTuple of array dimensions.获得数组维度的 tupleNotesMay be used to “reshape” the array, as long as this would not require a change in the total number of elementsExamples>>> x = 阅读详情

相关推荐

Numpy数组对象ndarray

Numpy数组对象ndarray N维数组对象:ndarray Python已有列表类型,为什么需要一个数组对象(类型)? •数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据 •设置专门的数组对象,经过优化,可以提升这类应用的运算速度 观察:科学计算中,一个维度所有数据的类型往往相同 •数组对象采用相同的数据类型,有助于节省运算和存储空间 ndarray是一个多维数组对象,由两部分构...

高雅的博客 1048

14_NumPy数组ndarray的显示格式(位数,指数符号,零填充等)的指定

14_NumPy数组ndarray的显示格式(位数,指数符号,零填充等)的指定 通过print()显示NumPy数组ndarray时,可以通过numpy.set_printoptions()来更改显示格式(位数,指数符号,零填充等)。 设置后,脚本将使用该设置。 np.set_printoptions()的设置是通过print()显示时的设置,原始ndarary本身的值不会更改。 在此: 指定小...

qq_18351157的博客 1万+

安捷伦示波器实战指南:从基础操作到精准触发

本文详细介绍了安捷伦示波器的基础操作与高级功能,包括精准触发配置、波形分析和常见问题排查。通过实战技巧和优化建议,帮助工程师快速掌握示波器的核心功能,提升调试效率。特别适合电子工程师和测试技术人员参考使用。

weixin_30839881的博客 135

详解 Numpy.ndarray

NumPy支持比Python更多种类的数字类型,有5种基本数字类型:布尔值(bool)、整数(int)、无符号整数(uint)、浮点(float)、复数(complex) 1、np.array 数组 2、np.ndarray N维数组 一个 ndarray是具有相同类型和大小的项目的多维容器。 尺寸和数组中的项目的数量是由它的shape定义, 它是由N个非负整数组成的tuple(元组),用于指定每个维度的大小。 不同的是,ndarrays可以共享相同的数据, 因此在一个ndarray中进行的更改可能在另一个

绿色羽毛 5万+

在 Kubernetes 上部署 Label Studio

Label Studio 是一款开源的数据标注工具,支持多种标注任务,如文本标注、图像标注、音频标注等。

啥都会一点 669

oh-my-zsh详细安装与主题插件配置

使用Linux的小伙伴都知道默认shell是bash,但是对于喜欢折腾,喜欢酷炫的我们bash怎能够用。zsh的作为一种shell,功能更强大,但是配置复杂。后来,有大佬创建了一个名为oh-my-zsh的开源项目,使用方便,功能强大。 下面就去oh-my-zsh的配置。 ①安装zsh 想要安装oh-my-zsh,首先得安装zsh,输入命令 sudo apt-get install zsh 界面如下 ②查看是否安装成功 输入命令 zsh --version 可以查看安装zsh的版本..

惜洛-Jankin的博客 2万+

numpy.ndarray

但是,在某些情况下,numpy.ndarray 类型也可以作为 OpenCV 和其他 Python 库之间数据交换的一种方式。numpy.ndarray 是 Python 中 NumPy 库中的一个类,用于表示多维数组。在这里,np.uint8 表示像素值的数据类型是无符号8位整数,相当于 uchar 类型。在图像处理中,numpy.ndarray 类型通常用于表示图像的像素值。numpy.ndarray 类提供了许多有用的函数和运算符,可以用于访问和操作数组中的元素。

m0_75260145的博客 823

从流体力学到深度学习:手把手教你用PINN预测涡流场(基于TensorFlow2.10+GPU)

本文详细介绍了如何利用物理信息神经网络(PINN)结合TensorFlow 2.10和GPU加速,预测Navier-Stokes方程的涡流场。通过核心原理讲解、实战环境配置、网络架构设计及物理约束实现,帮助读者掌握从流体力学到深度学习的跨学科技术应用,特别适合处理复杂流体问题和非定常流动场景。

weixin_29048309的博客 212

numpy批量处理

为神经网络传输数据做基础铺垫,numpy下简单的数据批量处理 import numpy as np #按正态生成10000个形状为2×3的矩阵 dtrain=np.random.randn(10000,2,3) print(dtrain.shape) #打乱数据 np.random.shuffle(dtrain) #定义批量大小每次取100个数据 Size=100 #批量处理 for i in range(0,len(dtrain),Size): Summ=np.sum(dtrain[i:i+S

apple_53439775的博客 1077

STM32(HAL库)软件IIC驱动OLED

本文通过STM32F103C8T6单片机(HAL库)通过软件IIC方式对OLED进行驱动。

weixin_44597885的博客 9762

《网络摄像机实战11:flutter_webrtc支持 AWS Kinesis Video Streams信令服务器》

本文介绍了如何在Flutter项目中集成WebRTC实现网络摄像头的实时视频和音频对讲功能。通过使用flutter_webrtc插件,开发者可以快速构建跨平台的视频通信应用。文章详细说明了集成步骤:1)安装flutter_webrtc插件;2)配置信令服务器和KVS服务;3)初始化本地/远程视频渲染器;4)建立WebRTC连接并进行设备呼叫。最后展示了实际应用效果图,证明该方案能有效实现移动端与摄像头的实时音视频交互。该方案为开发智能家居监控等应用提供了技术参考。

lvj_158的专栏 356

python数组中元素格式化输出

python数组元素输出

Aniyee 1233

【OpenClaw企业级智能体实战】第24篇:一人公司实战——用Agent Teams同时管理产品、运营、销售(附16个Agent配置方案+全流程指令模板)

当AI智能体从“单一工具”进化为“协同团队”,“一人公司”已从商业概念变为落地现实。2025年中国超1200万个体创业者采用OPC模式,靠AI团队突破人力边界。本文基于OpenClaw Agent Teams框架,拆解“1总指挥+15执行者”的三层AI组织架构,提供覆盖产品、运营、销售全业务的16个Agent分工矩阵、可直接复制的部署代码、通信配置方案与全流程指令模板。通过虚拟案例验证:单人+AI团队可实现月入26万的商业闭环,AI承担90%标准化工作,人力成本降低75000元/月,ROI超3200%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 943

numpy基础——ndarray对象属性

numpy 是使用python进行数据分析不可或缺的第三方库,非常多的科学计算工具都是基于 numpy 进行开发的。ndarray对象是用于存放同类型元素的多维数组,是numpy中的基本对象之一,另一个是func对象。本文主要内容是:1 、简单介绍ndarray对象;2、ndarray对象的常用属性;3、如何创建ndarray对象;4、ndarray元素访问。 它的维度以及个维度上的元素个数由sh

scorpion_zs的专栏 1万+

中国工商银行企业架构建设实践最全总结

中国工商银行参考IBM持续价值创新方法并吸收TOGAF等主流企业架构的框架理念,结合业务实际情况形成工行自己的企业架构方法论并实践,为数字化转型提供支撑。本案例通过介绍中国工商银行企业架构之业务架构设计方法,为其他银行企业架构建设提供参考。 企业架构是数字化转型的抓手,可以帮助企业规划、管理和实施数字化解决方案,以实现业务目标并适应不断变化的市场条件。中国工商银行通过战略目标指导业务架构的规划和设计,业务架构建模后指导IT架构建模。

银行信息系统应用架构详解 2732

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NumPy Ndarray 对象

将 Python 列表转换为 numpy 数组(ndarray),相比列表,ndarray 支持批量运算,更适合数值计算。时,如果输入是 numpy 数组,新数组可能与原数组共享内存(修改一个会影响另一个),适合节省内存;一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。嵌套列表会被转换为对应维度的数组(嵌套一层为 2 维,嵌套两层为 3 维,以此类推)。一个表示数组形状(shape)的元组,表示各维度大小的元组。,以 0 下标为开始进行集合中元素的索引。

2502_92540869的博客 1172

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NumPy Ndarray学习

轻松学习NumPy Ndarray

m0_56065966的博客 1649

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python中ndarray是什么意思_什么是Numpy的ndarray

首先,Numpy的核心是ndarray。然后,ndarray本质是数组,其不同于一般的数组,或者Python 的list的地方在于它可以有N 维(dimentions),也可简单理解为数组里面嵌套数组。最后,Numpy为ndarray提供了便利的操作函数,而且性能优越,完爆Python 的list,因此在数值计算,机器学习,人工智能,神经网络等领域广泛应用。Numpy几乎是Python 生态系统的...

weixin_39887386的博客 3832

总结numpy中的ndarray,非常齐全

公众号后台回复“图书“,了解更多号主新书内容来源:Python碎片作者:binn.wongnumpy(Numerical Python)是一个开源的Python数据科学计算库,支持对N维数...

数据森麟 9826

Numpy基础入门(2) ndarray介绍

本节介绍了Numpy最核心的ndarray以及特性和属性

qq_53845451的博客 1万+

numpy基础——ndarray对象方法

上一篇主要介绍了ndarray对象的一些基本属性以及创建ndarray对象的一些非常常用的方法。接下来主要介绍ndarray对象比较常用的对象方法。需要注意的是,以下ndarray对象方法也是numpy中的函数:all, any, argmax, argmin, argpartition, argsort, choose, clip, compress, copy, cumprod, cumsum,

scorpion_zs的专栏 2万+

Numpy基础之 创建ndarray

 Numpy基础之 创建ndarray**1. 简介**Numpy(Numeric Python的简称)最重要的一个特点就是其N维数据对象(即ndarray),该对象是一个快速而灵活的一个大数据集容器。你可以利用它对整块数据执行数学运算,其语法跟标量元素之间的运算一样:ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型。每个数据都有一个shape(一个表示各维度大小...

hbu_pig的专栏 3811

什么是Numpy的ndarray

什么是Numpy的ndarray 什么是Numpy的ndarray 首先,Numpy的核心是ndarray。 然后,ndarray本质是数组,其不同于一般的数组,或者Python 的list的地方在于它可以有N 维(dimentions),也可简单理解为数组里面嵌套数组。 最后,Numpy为ndarray提供了便利的操作函数,而且性能优越,完爆Python 的list,因此在数

hemuxiao的专栏 1万+

Numpy对象——ndarray

一.Numpy简介 Numpy库可以说是python旗下的一个对数据进行具体分析的一个库。支持大量的维度数组与矩阵运算比如说线性代数、傅里叶变换、随机数等,它还有一个非常强大的N维数组对象,就是我们今天要介绍的ndarray对象。 二.ndarray对象 ndarray是一个以0索引开始的一系列同类型数据集合。在内存中,每个元素都有相同储存大小的区域。 (一)ndarray的创建 numpy.ar...

Guo_Jiliang1的博客 673

【NumPy】ndarray介绍

Numpy的ndarray介绍

qq_61144763的博客 1688

Numpy——数组对象ndarray

1.什么事numpy? Numpy 是用于数据科学计算的基础,不但能够完成科学计算任务,还能被用作高效地多维数据容器。用于存储和处理大型矩阵。 Python提供了一个array模块,和list不同,它直接保存数值,但是由于Python的array模块不支持多维,也没有各种运算函数。 Numpy 弥补了这一遗憾。Numpy提供了一种存储单一数据类型的多维数组——ndarray 2.nd...

趙尒七 1943
上一篇: np.squeeze()函数
下一篇: 数据的CSV文件存取
June �
博客等级 码龄8年 10粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值