Python的50个常用Numpy 函数详解

Numpy是python中最有用的工具之一。它可以有效地处理大容量数据。使用NumPy的最大原因之一是它有很多处理数组的函数。在本文中,将介绍NumPy在数据科学中最重要和最有用的一些函数。

创建数组

1、Array

它用于创建一维或多维数组

numpy.array(object, dtype=None, *,  
            copy=True, order='K', subok=False, ndmin=0, like=None)  

Dtype:生成数组所需的数据类型。
ndim:指定生成数组的最小维度数。

import numpy as np  
np.array([1,2,3,4,5])  
----------------  
array([1, 2, 3, 4, 5, 6])  

还可以使用此函数将pandas的df和series转为NumPy数组。

sex = pd.Series(['Male','Male','Female'])  
np.array(sex)  
------------------------  
array(['Male', 'Male', 'Female'], dtype=object)  

2、Linspace

创建一个具有指定间隔的浮点数的数组。

numpy.linspace(start, stop, num=50, endpoint=True,  
               retstep=False, dtype=None, axis=0)[source]  

start:起始数字
end:结束
Num:要生成的样本数,默认为50。

np.linspace(10,100,10)  
--------------------------------  
array([ 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.])  

3、Arange

在给定的间隔内返回具有一定步长的整数。

numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)  

step:数值步长。

np.arange(5,10,2)  
-----------------------  
array([5, 7, 9])  

4、Uniform

在上下限之间的均匀分布中生成随机样本。

numpy.random.uniform(low=0.0, high=1.0, size=None)  

np.random.uniform(5,10,size = 4)  
------------  
array([6.47445571, 5.60725873, 8.82192327, 7.47674099])  
  
np.random.uniform(size = 5)  
------------  
array([0.83358092, 0.41776134, 0.72349553])  
  
np.random.uniform(size = (2,3))  
------------  
array([[0.7032511 , 0.63212039, 0.6779683 ],  
      [0.81150812, 0.26845613, 0.99535264]])  

5、Random.randint

在一个范围内生成n个随机整数样本。

numpy.random.randint(low, high=None, size=None, dtype=int)  

np.random.randint(5,10,10)  
------------------------------  
array([6, 8, 9, 9, 7, 6, 9, 8, 5, 9])  

6、Random.random

生成n个随机浮点数样本。

numpy.random.random(size=None)  

np.random.random(3)  
---------------------------  
array([0.87656396, 0.24706716, 0.98950278])  

7、Logspace

在对数尺度上生成间隔均匀的数字。

numpy.logspace(start, stop, num=50, endpoint=True,  
               base=10.0, dtype=None, axis=0)  

Start:序列的起始值。
End:序列的最后一个值。
endpoint:如果为True,最后一个样本将包含在序列中。
base:底数。默认是10。

np.logspace(0,10,5,base=2)  
------------------  
array([1.00000000e+00, 5.65685425e+00,   
       3.20000000e+01, 1.81019336e+02,1.02400000e+03])  

8、zeroes

np.zeroes会创建一个全部为0的数组。

numpy.zeros(shape, dtype=float, order='C', *, like=None)  

shape:阵列的形状。
Dtype:生成数组所需的数据类型。’ int ‘或默认’ float ’

np.zeros((2,3),dtype='int')  
---------------  
array([[0, 0, 0],  
      [0, 0, 0]])  
  
np.zeros(5)  
-----------------  
array([0., 0., 0., 0., 0.])  

9、ones

np.ones函数创建一个全部为1的数组。

numpy.ones(shape, dtype=None, order='C', *, like=None)  

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

10、full

创建一个单独值的n维数组。

numpy.full(shape, fill_value, dtype=None, order='C', *, like=None)  

fill_value:填充值。

np.full((2,4),fill_value=2)  
--------------  
array([[2, 2, 2, 2],  
      [2, 2, 2, 2]])(2,4) : ꜱʜᴀᴘᴇ  

11、Identity

创建具有指定维度的单位矩阵。

numpy.identity(n, dtype=None, *, like=None)  

np.identity(4)  
----------  
array([[1., 0., 0., 0.],  
      [0., 1., 0., 0.],  
      [0., 0., 1., 0.],  
      [0., 0., 0., 1.]])#ᴅᴇꜰᴀᴜʟᴛ ᴅᴀᴛᴀ ᴛʏᴘᴇ ɪꜱ `ꜰʟᴏᴀᴛ`  

数组操作

12、min

返回数组中的最小值。

np.min(a, axis=None, out=None, keepdims=<no value>,  
       initial=<no value>, where=<no value>)  

axis:用于操作的轴。
out:用于存储输出的数组。

arr = np.array([1,1,2,3,3,4,5,6,6,2])  
np.min(arr)  
----------------  
1  

13、max

返回数组中的最大值。

np.max(a, axis=None,out=None)  

np.max(arr)  
------------------  
6  

14、unique

返回一个所有唯一元素排序的数组。

numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None, *, equal_nan=True)  

return_index:如果为True,返回数组的索引。
return_inverse:如果为True,返回唯一数组的下标。
return_counts:如果为True,返回数组中每个唯一元素出现的次数。
axis:要操作的轴。默认情况下,数组被认为是扁平的。

np.unique(arr,return_counts=True)  
---------------------  
(  
array([1, 2, 3, 4, 5, 6]),             ## Unique elements  
array([2, 2, 2, 1, 1, 2], dtype=int64) ## Count  
)  

15、mean

返回数组的平均数

numpy.mean(a, axis=None, dtype=None, out=None)  

np.mean(arr,dtype='int')  
-------------------------------  
3  

16、medain

返回数组的中位数。

numpy.medain(a, axis=None, out=None)  

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

17、digitize

返回输入数组中每个值所属的容器的索引。

numpy.digitize(x, bins, right=False)[source]  

bin:容器的数组。
right:表示该间隔是否包括右边或左边的bin。

a = np.array([-0.9, 0.5, 0.9, 1, 1.2, 1.4, 3.6, 4.7, 5.3])  
bins = np.array([0,1,2,3])  
np.digitize(a,bins)  
-------------------------------  
array([0, 1, 1, 2, 2, 2, 4, 4, 4], dtype=int64)  
Exp       Value  
x < 0     :   0  
0 <= x <1 :   1  
1 <= x <2 :   2  
2 <= x <3 :   3  
3 <=x     :   4  
Compares -0.9 to 0, here x < 0 so Put 0 in resulting array.  
Compares 0.5 to 0, here 0 <= x <1 so Put 1.  
Compares 5.4 to 4, here 3<=x so Put 4  

18、reshape

它是NumPy中最常用的函数之一。它返回一个数组,其中包含具有新形状的相同数据。

numpy.reshape(shap)  

A = np.random.randint(15,size=(4,3))  
A  
----------------------  
array([[ 8, 14, 1],  
      [ 8, 11, 4],  
      [ 9, 4, 1],  
      [13, 13, 11]])  
  
A.reshape(3,4)  
-----------------  
array([[ 8, 14, 1, 8],  
      [11, 4, 9, 4],  
      [ 1, 13, 13, 11]])  
  
A.reshape(-1)    
-------------------  
array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])  

19、expand_dims

它用于扩展数组的维度。

numpy.expand_dims(a, axis)  

arr = np.array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])  
np.expand_dims(A,axis=0)  
-------------------------  
array([[ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11]])  
  
np.expand_dims(A,axis=1)  
---------------------------  
array([[ 8],  
      [14],  
      [ 1],  
      [ 8],  
      [11],  
      [ 4],  
      [ 9],  
      [ 4],  
      [ 1],  
      [13],  
      [13],  
      [11]])  

20、squeeze

通过移除一个单一维度来降低数组的维度。

np.squeeze(a, axis=None)  

arr = np.array([[ 8],[14],[ 1],[ 8],[11],[ 4],[ 9],[ 4],[ 1],[13],[13],[11]])  
np.squeeze(arr)  
---------------------------  
array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])  

21、count_nonzero

计算所有非零元素并返回它们的计数。

numpy.count_nonzero(a, axis=None, *, keepdims=False)  

a = np.array([0,0,1,1,1,0])  
np.count_nonzero(a)  
--------------------------  
3  

22、argwhere

查找并返回非零元素的所有下标。

numpy.argwhere(a)  

a = np.array([0,0,1,1,1,0])  
np.argwhere(a)  
---------------------  
array([[2],[3],[4]], dtype=int64)  

23、argmax & argmin

argmax返回数组中Max元素的索引。它可以用于多类图像分类问题中获得高概率预测标签的指标。

numpy.argmax(a, axis=None, out=None, *, keepdims=<no value>)  

arr = np.array([[0.12,0.64,0.19,0.05]])  
np.argmax(arr)  
---------  
1  

argmin将返回数组中min元素的索引。

numpy.argmin(a, axis=None, out=None, *, keepdims=<no value>)  

np.argmin(min)  
------  
3  

24、sort

对数组排序。

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

kind:要使用的排序算法。{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}

arr = np.array([2,3,1,7,4,5])  
np.sort(arr)  
----------------  
array([1, 2, 3, 4, 5, 7])  

25、abs

numpy.absolute(x, /, out=None, *,   
               where=True, casting='same_kind',   
               order='K', dtype=None,   
               subok=True[, signature, extobj]) = <ufunc 'absolute'>  

返回数组中元素的绝对值。当数组中包含负数时,它很有用。

A = np.array([[1,-3,4],[-2,-4,3]])np.abs(A)  
---------------  
array([[1, 3, 4],  
      [2, 4, 3]])  

26、round

将浮点值四舍五入到指定数目的小数点。

numpy.around(a, decimals=0, out=None)  

decimals:要保留的小数点的个数。

a = np.random.random(size=(3,4))  
a  
-----  
array([[0.81695699, 0.42564822, 0.65951417, 0.2731807 ],  
      [0.7017702 , 0.12535894, 0.06747666, 0.55733467],  
      [0.91464488, 0.26259026, 0.88966237, 0.59253923]])  
       
  
np.round(a,decimals=0)  
------------  
array([[1., 0., 1., 1.],  
      [1., 1., 1., 1.],  
      [0., 1., 0., 1.]])  
  
np.round(a,decimals=1)  
-------------  
array([[0.8, 0. , 0.6, 0.6],  
      [0.5, 0.7, 0.7, 0.8],  
      [0.3, 0.9, 0.5, 0.7]])  

27、clip

numpy.clip(a, a_min, a_max, out=None, **kwargs)  

它可以将数组的裁剪值保持在一个范围内。

arr = np.array([0,1,-3,-4,5,6,7,2,3])  
arr.clip(0,5)  
-----------------  
array([0, 1, 0, 0, 5, 5, 5, 2, 3])  
  
arr.clip(0,3)  
------------------  
array([0, 1, 0, 0, 3, 3, 3, 2, 3])  
  
arr.clip(3,5)  
------------------  
array([3, 3, 3, 3, 5, 5, 5, 3, 3])  

替换数组中的值

28、where

返回满足条件的数组元素。

numpy.where(condition, [x, y, ]/)  

condition:匹配的条件。如果true则返回x,否则y。

a = np.arange(12).reshape(4,3)  
a  
-------  
array([[ 0, 1, 2],  
      [ 3, 4, 5],  
      [ 6, 7, 8],  
      [ 9, 10, 11]])  
       
np.where(a>5)     ## Get The Index  
--------------------  
(array([2, 2, 2, 3, 3, 3], dtype=int64),  
array([0, 1, 2, 0, 1, 2], dtype=int64))  
  
a[np.where(a>5)] ## Get Values  
--------------------------  
array([ 6, 7, 8, 9, 10, 11])  

它还可以用来替换pandas df中的元素。

np.where(data[feature].isnull(), 1, 0)  

29、put

用给定的值替换数组中指定的元素。

numpy.put(a, ind, v)  

a:数组
Ind:需要替换的索引
V:替换值

arr = np.array([1,2,3,4,5,6])  
arr  
--------  
array([1, 2, 3, 4, 5, 6])  
  
np.put(arr,[1,2],[6,7])  
arr  
--------  
array([1, 6, 7, 4, 5, 6])  

30、copyto

将一个数组的内容复制到另一个数组中。

numpy.copyto(dst, src, casting='same_kind', where=True)  

dst:目标
src:来源

arr1 = np.array([1,2,3])  
arr2 = np.array([4,5,6])  
print("Before arr1",arr1)  
print("Before arr2",arr1)  
np.copyto(arr1,arr2)  
print("After arr1",arr1)  
print("After arr2",arr2)  
---------------------------  
Before arr1 [1 2 3]  
Before arr2 [4 5 6]  
  
After arr1 [4 5 6]  
After arr2 [4 5 6]  

集合操作

31、查找公共元素

intersect1d函数以排序的方式返回两个数组中所有唯一的值。

numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)  

Assume_unique:如果为真值,则假设输入数组都是唯一的。
Return_indices:如果为真,则返回公共元素的索引。

ar1 = np.array([1,2,3,4,5,6])  
ar2 = np.array([3,4,5,8,9,1])  
np.intersect1d(ar1,ar2)  
---------------  
array([1, 3, 4, 5])  
  
np.intersect1d(ar1,ar2,return_indices=True)  
---------------  
(array([1, 3, 4, 5]),                 ## Common Elements  
array([0, 2, 3, 4], dtype=int64),      
array([5, 0, 1, 2], dtype=int64))  

32、查找不同元素

numpy.setdiff1d(ar1, ar2, assume_unique=False)  

np.setdiff1d函数返回arr1中在arr2中不存在的所有唯一元素。

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

33、从两个数组中提取唯一元素

numpy.setxor1d(ar1, ar2, assume_unique=False)  

Setxor1d 将按顺序返回两个数组中所有唯一的值。

a = np.array([1, 2, 3, 4, 6])  
b = np.array([1, 4, 9, 4, 36])  
np.setxor1d(a,b)  
--------------------  
array([ 2, 3, 6, 9, 36])  

34、合并

numpy.union1d(ar1, ar2)  

Union1d函数将两个数组合并为一个。

a = np.array([1, 2, 3, 4, 5])  
b = np.array([1, 3, 5, 4, 36])  
np.union1d(a,b)  
-------------------  
array([ 1, 2, 3, 4, 5, 36])  

数组分割

35、水平分割

numpy.hsplit(ary, indices_or_sections)  

Hsplit函数将数据水平分割为n个相等的部分。

A = np.array([[3,4,5,2],[6,7,2,6]])  
np.hsplit(A,2)   ## splits the data into two equal parts  
---------------  
[ array([[3, 4],[6, 7]]), array([[5, 2],[2, 6]]) ]  
  
np.hsplit(A,4)   ## splits the data into four equal parts  
-----------------  
[ array([[3],[6]]), array([[4],[7]]),  
  array([[5],[2]]), array([[2],[6]]) ]  

36、垂直分割

numpy.vsplit(ary, indices_or_sections)  

Vsplit将数据垂直分割为n个相等的部分。

A = np.array([[3,4,5,2],[6,7,2,6]])  
np.vsplit(A,2)  
----------------  
[ array([[3, 4, 5, 2]]), array([[6, 7, 2, 6]]) ]  

数组叠加

37、水平叠加

numpy.hstack(tup)  

hstack 将在另一个数组的末尾追加一个数组。

a = np.array([1,2,3,4,5])  
b = np.array([1,4,9,16,25])  
  
np.hstack((a,b))  
---------------------  
array([ 1, 2, 3, 4, 5, 1, 4, 9, 16, 25])  

38、垂直叠加

numpy.vstack(tup)  

vstack将一个数组堆叠在另一个数组上。

np.vstack((a,b))  
----------------------  
array([[ 1, 2, 3, 4, 5],  
      [ 1, 4, 9, 16, 25]])  

数组比较

39、allclose

numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)  

如果两个数组的形状相同,则Allclose函数根据公差值查找两个数组是否相等或近似相等。

a = np.array([0.25,0.4,0.6,0.32])  
b = np.array([0.26,0.3,0.7,0.32])  
  
tolerance = 0.1           ## Total Difference  
np.allclose(a,b,tolerance)  
---------  
False  
  
tolerance = 0.5  
np.allclose(a,b,tolerance)  
----------  
True  

40、equal

numpy.equal(x1, x2, /, out=None, *,   
            where=True, casting='same_kind',   
            order='K', dtype=None, subok=True[, signature, extobj]  
           ) = <ufunc 'equal'>  

它比较两个数组的每个元素,如果元素匹配就返回True。

np.equal(arr1,arr2)  
-------------  
array([ True, True, True, False, True, True])  

重复的数组元素

41、repeat

它用于重复数组中的元素n次。

numpy.repeat(a, repeats, axis=None)  

A:重复的元素
Repeats:重复的次数。

np.repeat('2017',3)  
---------------------  
array(['2017', '2017', '2017'], dtype='<U4')  

我们来看一个更实际的示例,我们有一个包含按年数量销售的数据集。

fruits = pd.DataFrame([  
  ['Mango',40],  
  ['Apple',90],  
  ['Banana',130]  
],columns=['Product','ContainerSales'])  
fruits  

在数据集中,缺少年份列。我们尝试使用numpy添加它。

fruits['year'] = np.repeat(2020,fruits.shape[0])  
fruits  

42、tile

通过重复A,rep次来构造一个数组。

numpy.title(A, reps)  

np.tile("Ram",5)  
-------  
array(['Ram', 'Ram', 'Ram', 'Ram', 'Ram'], dtype='<U3')  
  
np.tile(3,(2,3))  
-------  
array([[3, 3, 3],  
      [3, 3, 3]])  

爱因斯坦求和

43、einsum

umpy.einsum(subscripts, *operands, out=None,   
            dtype=None, order='K',   
            casting='safe', optimize=False)  

此函数用于计算数组上的多维和线性代数运算。

a = np.arange(1,10).reshape(3,3)  
b = np.arange(21,30).reshape(3,3)  
  
np.einsum('ii->i',a)  
------------  
array([1, 5, 9])  
  
np.einsum('ji',a)  
------------  
array([[1, 4, 7],  
      [2, 5, 8],  
      [3, 6, 9]])  
       
np.einsum('ij,jk',a,b)  
------------  
array([[150, 156, 162],  
      [366, 381, 396],  
      [582, 606, 630]])  
       
p.einsum('ii',a)  
----------  
15  

统计分析

44、直方图

numpy.histogram(a, bins=10, range=None,   
                normed=None, weights=None, density=None)  

这是Numpy的重要统计分析函数,可计算一组数据的直方图值。

A = np.array([[3, 4, 5, 2],  
            [6, 7, 2, 6]])  
np.histogram(A)  
-------------------  
(array([2, 0, 1, 0, 1, 0, 1, 0, 2, 1], dtype=int64),  
array([2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. ]))  

45、百分位数

沿指定轴计算数据的Q-T-T百分位数。

numpy.percentile(a, q, axis=None, out=None,   
                 overwrite_input=False, method='linear',   
                 keepdims=False, *,   
                 interpolation=None)[source]  

a:输入。
q:要计算的百分位。
overwrite_input:如果为true,则允许输入数组修改中间计算以节省内存。

a = np.array([[2, 4, 6], [4, 8, 12]])  
  
np.percentile(a, 50)  
-----------  
5.0  
  
np.percentile(a, 10)  
------------  
3.0  
  
arr = np.array([2,3,4,1,6,7])  
np.percentile(a,5)  
------------  
2.5  

46、标准偏差

numpy.std(a, axis=None, dtype=None, out=None,   
          ddof=0, keepdims=<no value>, *,   
          where=<no value>)  

std用于计算沿轴的标准偏差。

a = np.array([[2, 4, 6], [4, 8, 12]])  
np.std(a,axis=1)  
--------  
array([1.63299316, 3.26598632])  
  
np.std(a,axis=0)   ## Column Wise  
--------  
array([1., 2., 3.])  

47、方差

numpy.var(a, axis=None, dtype=None, out=None,   
          ddof=0, keepdims=<no value>, *,   
          where=<no value>)  

var用于计算沿轴的方差。

a = np.array([[2, 4, 6], [4, 8, 12]])  
np.var(a,axis=1)  
-------------------  
array([ 2.66666667, 10.66666667])  
  
np.var(a,axis=0)  
-------------------  
array([1., 4., 9.])  

数组打印

48、显示带有两个十进制值的浮点数

numpy.set_printoptions(precision=None, threshold=None, edgeitems=None,   
                       linewidth=None, suppress=None, nanstr=None, infstr=None,   
                       formatter=None, sign=None, floatmode=None, *,  
                       legacy=None)  

np.set_printoptions(precision=2)  
  
a = np.array([12.23456, 32.34535])  
print(a)  
------------  
array([12.23,32.34])  

设置打印数组最大值

np.set_printoptions(threshold=np.inf)  

增加一行中元素的数量

np.set_printoptions(linewidth=100) ## 默认是 75  

保存和加载数据

49、保存

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ',   
              newline='\n', header='', footer='',   
              comments='# ', encoding=None)  

savetxt用于在文本文件中保存数组的内容。

arr = np.linspace(10,100,500).reshape(25,20)  
np.savetxt('array.txt',arr)  

50、加载

numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None,  
              converters=None, skiprows=0, usecols=None, unpack=False,   
              ndmin=0, encoding='bytes', max_rows=None, *,   
              quotechar=None, like=None)  

用于从文本文件加载数组,它以文件名作为参数。

np.loadtxt('array.txt')  

以上就是50个numpy常用的函数,希望对你有所帮助。

Python入门学习资料

1.Python系统学习路线图

首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!

2.Python必备开发工具

3.看视频进行系统学习

先在网上康康达人分享的视频、干货,通俗易懂,形成初始概念;你会发现博主们在进阶成大神之前他们的学习途径有哪些,找到适合自己风格的课程;

不过这样学习技术比较杂乱,所以通过更加系统的视频来学习,效果更好,也更全面。

4.实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

最后

如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。

在这里插入图片描述

希望这篇文章对你有帮助,也希望能帮到大家,因为你我都是热爱python的编程语言爱好者。
————————————————

↓↓↓↓

资料获取:已打包,添加文末 Python笔记领取即可获取!

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值