
1. 引言
最近在將一個算法由matlab轉成python,初學python,很多地方還不熟悉,總體感覺就是上手容易,實際上很優雅地用python還是蠻難的。目前為止,覺得就算法仿真研究而言,還是matlab用得特別舒服,可能是比較熟悉的緣故吧。matlab直接集成了很多算法工具箱,函數查詢、調用、變量查詢等非常方便,或許以后用久了python也會感覺很好用。與python相比,最喜歡的莫過于可以直接選中某段代碼執行了,操作方便,python也可以實現,就是感覺不是很方便。
言歸正傳,做算法要用到很多的向量和矩陣運算操作,這些嘛在matlab里面已經很熟悉了,但用python的時候需要用一個查一個,挺煩的,所以在此稍作總結,后續使用過程中會根據使用體驗更新。
python的矩陣運算主要依賴numpy包,scipy包以numpy為基礎,大大擴展了后者的運算能力。
2. 創建一般的多維數組
import numpy as np
a = np.array([1,2,3], dtype=int) # 創建1*3維數組 array([1,2,3])
type(a) # numpy.ndarray類型
a.shape # 維數信息(3L,)
a.dtype.name # 'int32'
a.size # 元素個數:3
a.itemsize #每個元素所占用的字節數目:4
b=np.array([[1,2,3],[4,5,6]],dtype=int) # 創建2*3維數組 array([[1,2,3],[4,5,6]])
b.shape # 維數信息(2L,3L)
b.size # 元素個數:6
b.itemsize # 每個元素所占用的字節數目:4
c=np.array([[1,2,3],[4,5,6]],dtype='int16') # 創建2*3維數組 array([[1,2,3],[4,5,6]],dtype=int16)
c.shape # 維數信息(2L,3L)
c.size # 元素個數:6
c.itemsize # 每個元素所占用的字節數目:2
c.ndim # 維數
d=np.array([[1,2,3],[4,5,6]],dtype=complex) # 復數二維數組
d.itemsize # 每個元素所占用的字節數目:16
d.dtype.name # 元素類型:'complex128'
3. 創建特殊類型的多維數組
a1 = np.zeros((3,4)) # 創建3*4全零二維數組
輸出:
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
a1.dtype.name # 元素類型:'float64'
a1.size # 元素個數:12
a1.itemsize # 每個元素所占用的字節個數:8
a2 = np.ones((2,3,4), dtype=np.int16) # 創建2*3*4全1三維數組
a2 = np.ones((2,3,4), dtype='int16') # 創建2*3*4全1三維數組
輸出:
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]]], dtype=int16)
a3 = np.empty((2,3)) # 創建2*3的未初始化二維數組
輸出:(may vary)
array([[ 1., 2., 3.],
[ 4., 5., 6.]])
a4 = np.arange(10,30,5) # 初始值10,結束值:30(不包含),步長:5
輸出:array([10, 15, 20, 25])
a5 = np.arange(0,2,0.3) # 初始值0,結束值:2(不包含),步長:0.2
輸出:array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])
from numpy import pi
np.linspace(0, 2, 9) # 初始值0,結束值:2(包含),元素個數:9
輸出:
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
x = np.linspace(0, 2*pi, 9)
輸出:
array([ 0. , 0.78539816, 1.57079633, 2.35619449, 3.14159265,
3.92699082, 4.71238898, 5.49778714, 6.28318531])
a = np.arange(6)
輸出:
array([0, 1, 2, 3, 4, 5])
b = np.arange(12).reshape(4,3)
輸出:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
c = np.arange(24).reshape(2,3,4)
輸出:
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]]])
使用numpy.set_printoptions可以設置numpy變量的打印格式
在ipython環境下,使用help(numpy.set_printoptions)查詢使用幫助和示例
4. 多維數組的基本操作
加法和減法操作要求操作雙方的維數信息一致,均為M*N為數組方可正確執行操作。
a = np.arange(4)
輸出:
array([0, 1, 2, 3])
b = a**2
輸出:
array([0, 1, 4, 9])
c = 10*np.sin(a)
輸出:
array([ 0. , 8.41470985, 9.09297427, 1.41120008])
n < 35
輸出:
array([ True, True, True, True], dtype=bool)
A = np.array([[1,1],[0,1]])
B = np.array([[2,0],[3,4]])
C = A * B # 元素點乘
輸出:
array([[2, 0],
[0, 4]])
D = A.dot(B) # 矩陣乘法
輸出:
array([[5, 4],
[3, 4]])
E = np.dot(A,B) # 矩陣乘法
輸出:
array([[5, 4],
[3, 4]])
多維數組操作過程中的類型轉換
When operating with arrays of different types, the type of the resulting array corresponds to the more general or precise one (a behavior known as upcasting)
即操作不同類型的多維數組時,結果自動轉換為精度更高類型的數組,即upcasting
a = np.ones((2,3),dtype=int) # int32
b = np.random.random((2,3)) # float64
b += a # 正確
a += b # 錯誤
a = np.ones(3,dtype=np.int32)
b = np.linspace(0,pi,3)
c = a + b
d = np.exp(c*1j)
輸出:
array([ 0.54030231+0.84147098j, -0.84147098+0.54030231j,
-0.54030231-0.84147098j])
d.dtype.name
輸出:
'complex128'
多維數組的一元操作,如求和、求最小值、最大值等
a = np.random.random((2,3))
a.sum()
a.min()
a.max()
b = np.arange(12).reshape(3,4)
輸出:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
b.sum(axis=0) # 按列求和
輸出:
array([12, 15, 18, 21])
b.sum(axis=1) # 按行求和
輸出:
array([ 6, 22, 38])
b.cumsum(axis=0) # 按列進行元素累加
輸出:
array([[ 0, 1, 2, 3],
[ 4, 6, 8, 10],
[12, 15, 18, 21]])
b.cumsum(axis=1) # 按行進行元素累加
輸出:
array([[ 0, 1, 3, 6],
[ 4, 9, 15, 22],
[ 8, 17, 27, 38]])
universal functions
B = np.arange(3)
np.exp(B)
np.sqrt(B)
C = np.array([2.,-1.,4.])
np.add(B,C)
其他的ufunc函數包括:
all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor,inner, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var,vdot, vectorize, where
5. 數組索引、切片和迭代
a = np.arange(10)**3
a[2]
a[2:5]
a[::-1] # 逆序輸出
for i in a:
print (i**(1/3.))
def f(x,y):
return 10*x+y
b = np.fromfunction(f,(5,4),dtype=int)
b[2,3]
b[0:5,1]
b[:,1]
b[1:3,:]
b[-1]
c = np.array([[[0,1,2],[10,11,12]],[[100,101,102],[110,111,112]]])
輸出:
array([[[ 0, 1, 2],
[ 10, 11, 12]],
[[100, 101, 102],
[110, 111, 112]]])
c.shape
輸出:
(2L, 2L, 3L)
c[0,...]
c[0,:,:]
輸出:
array([[ 0, 1, 2],
[10, 11, 12]])
c[:,:,2]
c[...,2]
輸出:
array([[ 2, 12],
[102, 112]])
for row in c:
print(row)
for element in c.flat:
print(element)
a = np.floor(10*np.random.random((3,4)))
輸出:
array([[ 3., 9., 8., 4.],
[ 2., 1., 4., 6.],
[ 0., 6., 0., 2.]])
a.ravel()
輸出:
array([ 3., 9., 8., ..., 6., 0., 2.])
a.reshape(6,2)
輸出:
array([[ 3., 9.],
[ 8., 4.],
[ 2., 1.],
[ 4., 6.],
[ 0., 6.],
[ 0., 2.]])
a.T
輸出:
array([[ 3., 2., 0.],
[ 9., 1., 6.],
[ 8., 4., 0.],
[ 4., 6., 2.]])
a.T.shape
輸出:
(4L, 3L)
a.resize((2,6))
輸出:
array([[ 3., 9., 8., 4., 2., 1.],
[ 4., 6., 0., 6., 0., 2.]])
a.shape
輸出:
(2L, 6L)
a.reshape(3,-1)
輸出:
array([[ 3., 9., 8., 4.],
[ 2., 1., 4., 6.],
[ 0., 6., 0., 2.]])
詳查以下函數:
ndarray.shape, reshape, resize, ravel
6. 組合不同的多維數組
a = np.floor(10*np.random.random((2,2)))
輸出:
array([[ 5., 2.],
[ 6., 2.]])
b = np.floor(10*np.random.random((2,2)))
輸出:
array([[ 0., 2.],
[ 4., 1.]])
np.vstack((a,b))
輸出:
array([[ 5., 2.],
[ 6., 2.],
[ 0., 2.],
[ 4., 1.]])
np.hstack((a,b))
輸出:
array([[ 5., 2., 0., 2.],
[ 6., 2., 4., 1.]])
from numpy import newaxis
np.column_stack((a,b))
輸出:
array([[ 5., 2., 0., 2.],
[ 6., 2., 4., 1.]])
a = np.array([4.,2.])
b = np.array([2.,8.])
a[:,newaxis]
輸出:
array([[ 4.],
[ 2.]])
b[:,newaxis]
輸出:
array([[ 2.],
[ 8.]])
np.column_stack((a[:,newaxis],b[:,newaxis]))
輸出:
array([[ 4., 2.],
[ 2., 8.]])
np.vstack((a[:,newaxis],b[:,newaxis]))
輸出:
array([[ 4.],
[ 2.],
[ 2.],
[ 8.]])
np.r_[1:4,0,4]
輸出:
array([1, 2, 3, 0, 4])
np.c_[np.array([[1,2,3]]),0,0,0,np.array([[4,5,6]])]
輸出:
array([[1, 2, 3, 0, 0, 0, 4, 5, 6]])
詳細使用請查詢以下函數:
hstack, vstack, column_stack, concatenate, c_, r_
7. 將較大的多維數組分割成較小的多維數組
a = np.floor(10*np.random.random((2,12)))
輸出:
array([[ 9., 7., 9., ..., 3., 2., 4.],
[ 5., 3., 3., ..., 9., 7., 7.]])
np.hsplit(a,3)
輸出:
[array([[ 9., 7., 9., 6.],
[ 5., 3., 3., 1.]]), array([[ 7., 2., 1., 6.],
[ 7., 5., 0., 2.]]), array([[ 9., 3., 2., 4.],
[ 3., 9., 7., 7.]])]
np.hsplit(a,(3,4))
輸出:
[array([[ 9., 7., 9.],
[ 5., 3., 3.]]), array([[ 6.],
[ 1.]]), array([[ 7., 2., 1., ..., 3., 2., 4.],
[ 7., 5., 0., ..., 9., 7., 7.]])]
實現類似功能的函數包括:
hsplit,vsplit,array_split
8. 多維數組的復制操作
a = np.arange(12)
輸出:
array([ 0, 1, 2, ..., 9, 10, 11])
not copy at all
b = a
b is a # True
b.shape = 3,4
a.shape # (3L,4L)
def f(x) # Python passes mutable objects as references, so function calls make no copy.
print(id(x)) # id是python對象的唯一標識符
id(a) # 111833936L
id(b) # 111833936L
f(a) # 111833936L
淺復制
c = a.view()
c is a # False
c.base is a # True
c.flags.owndata # False
c.shape = 2,6
a.shape # (3L,4L)
c[0,4] = 1234
print(a)
輸出:
array([[ 0, 1, 2, 3],
[1234, 5, 6, 7],
[ 8, 9, 10, 11]])
s = a[:,1:3]
s[:] = 10
print(a)
輸出:
array([[ 0, 10, 10, 3],
[1234, 10, 10, 7],
[ 8, 10, 10, 11]])
深復制
d = a.copy()
d is a # False
d.base is a # False
d[0,0] = 9999
print(a)
輸出:
array([[ 0, 10, 10, 3],
[1234, 10, 10, 7],
[ 8, 10, 10, 11]])
numpy基本函數和方法一覽
arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r, zeros,zeros_like
Conversions
ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat
Manipulations
array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, ndarray.item, newaxis, ravel, repeat, reshape, resize,squeeze, swapaxes, take, transpose, vsplit, vstack
Questionsall, any, nonzero, where
Ordering
argmax, argmin, argsort, max, min, ptp, searchsorted, sort
Operations
choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask, real, sum
Basic Statistics
cov, mean, std, var
Basic Linear Algebra
cross, dot, outer, linalg.svd, vdot
完整的函數和方法一覽表鏈接:
9. 特殊的索引技巧
a = np.arange(12)**2
輸出:
array([ 0, 1, 4, ..., 81, 100, 121])
i = np.array([1,1,3,8,5])
a[i]
輸出:
array([ 1, 1, 9, 64, 25])
j = np.array([[3,4],[9,7]])
a[j]
輸出:
array([[ 9, 16],
[81, 49]])
palette = np.array([[0,0,0],[255,0,0],[0,255,0],[0,0,255],[255,255,255]])
image = np.array([[0,1,2,0],[0,3,4,0]])
palette[image]
輸出:
array([[[ 0, 0, 0],
[255, 0, 0],
[ 0, 255, 0],
[ 0, 0, 0]],
[[ 0, 0, 0],
[ 0, 0, 255],
[255, 255, 255],
[ 0, 0, 0]]])
i = np.array([[0,1],[1,2]])
j = np.array([[2,1],[3,3]])
a[i,j]
輸出:
array([[ 2, 5],
[ 7, 11]])
l = [i,j]
a[l]
輸出:
array([[ 2, 5],
[ 7, 11]])
a[i,2]
輸出:
array([[ 2, 6],
[ 6, 10]])
a[:,j]
輸出:
array([[[ 2, 1],
[ 3, 3]],
[[ 6, 5],
[ 7, 7]],
[[10, 9],
[11, 11]]])
s = np.array([i,j])
print(s)
array([[[0, 1],
[1, 2]],
[[2, 1],
[3, 3]]])
a[tuple(s)]
輸出:
array([[ 2, 5],
[ 7, 11]])
print(tupe(s))
輸出:
(array([[0, 1],
[1, 2]]), array([[2, 1],
[3, 3]]))
10. 尋找最大值/最小值及其對應索引值
time = np.linspace(20, 145, 5)
輸出:
array([ 20. , 51.25, 82.5 , 113.75, 145. ])
data = np.sin(np.arange(20)).reshape(5,4)
輸出:
array([[ 0. , 0.84147098, 0.90929743, 0.14112001],
[-0.7568025 , -0.95892427, -0.2794155 , 0.6569866 ],
[ 0.98935825, 0.41211849, -0.54402111, -0.99999021],
[-0.53657292, 0.42016704, 0.99060736, 0.65028784],
[-0.28790332, -0.96139749, -0.75098725, 0.14987721]])
ind = data.argmax(axis=0)
輸出:
array([2, 0, 3, 1], dtype=int64)
time_max = time[ind]
輸出:
array([ 82.5 , 20. , 113.75, 51.25])
data_max = data[ind, xrange(data.shape[1])]
輸出:
array([ 0.98935825, 0.84147098, 0.99060736, 0.6569866 ])
np.all(data_max == data.max(axis=0))
輸出:
True
a = np.arange(5)
a[[1,3,4]] = 0
print(a)
輸出:
array([0, 0, 2, 0, 0])
a = np.arange(5)
a[[0,0,2]] = [1,2,3]
print(a)
輸出:
array([2, 1, 3, 3, 4])
a = np.arange(5)
a[[0,0,2]] += 1
print(a)
輸出:
array([1, 1, 3, 3, 4])
a = np.arange(12).reshape(3,4)
b = a > 4
輸出:
array([[False, False, False, False],
[False, True, True, True],
[ True, True, True, True]], dtype=bool)
a[b]
輸出:
array([ 5, 6, 7, 8, 9, 10, 11])
a[b] = 0
print(a)
輸出:
array([[0, 1, 2, 3],
[4, 0, 0, 0],
[0, 0, 0, 0]])
a = np.arange(12).reshape(3,4)
b1 = np.array([False,True,True])
b2 = n.array([True,False,True,False])
a[b1,:]
輸出:
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
a[b1]
輸出:
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
a[:,b2]
輸出:
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
a[b1,b2]
輸出:
array([ 4, 10])
11. ix_() function
a = np.array([2,3,4,5])
b = np.array([8,5,4])
c = np.array([5,4,6,8,3])
ax,bx,cx = np.ix_(a,b,c)
print(ax) # (4L, 1L, 1L)
輸出:
array([[[2]],
[[3]],
[[4]],
[[5]]])
print(bx) # (1L, 3L, 1L)
輸出:
array([[[8],
[5],
[4]]])
print(cx) # (1L, 1L, 5L)
輸出:
array([[[5, 4, 6, 8, 3]]])
result = ax + bx*cx
輸出:
array([[[42, 34, 50, 66, 26],
[27, 22, 32, 42, 17],
[22, 18, 26, 34, 14]],
[[43, 35, 51, 67, 27],
[28, 23, 33, 43, 18],
[23, 19, 27, 35, 15]],
[[44, 36, 52, 68, 28],
[29, 24, 34, 44, 19],
[24, 20, 28, 36, 16]],
[[45, 37, 53, 69, 29],
[30, 25, 35, 45, 20],
[25, 21, 29, 37, 17]]])
result[3,2,4]
輸出:17
12. 線性代數運算
a = np.array([[1.,2.],[3.,4.]])
a.transpose() # 轉置
np.linalg.inv(a) # 求逆
u = np.eye(2) # 產生單位矩陣
np.dot(a,a) # 矩陣乘積
np.trace(a) # 求矩陣的跡
y = np.array([5.],[7.]])
np.linalg.solve(a,y) # 求解線性方程組
np.linalg.eig(a) # 特征分解
“Automatic” Reshaping
a = np.arange(30)
a.shape = 2,-1,3
a.shape # (2L, 5L, 3L)
print(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],
[24, 25, 26],
[27, 28, 29]]])
x = np.arange(0,10,2)
y = np.arange(5)
m = np.vstack([x,y])
輸出:
array([[0, 2, 4, 6, 8],
[0, 1, 2, 3, 4]])
n = np.hstack([x,y])
輸出:
array([0, 2, 4, 6, 8, 0, 1, 2, 3, 4])
13. 矩陣的創建
a = np.array([1,2,3])
a1 = np.mat(a)
輸出:
matrix([[1, 2, 3]])
type(a1)
輸出:
numpy.matrixlib.defmatrix.matrix
a1.shape
輸出:
(1L, 3L)
a.shape
輸出:
(3L,)
b=np.matrix([1,2,3])
輸出:
matrix([[1, 2, 3]])
from numpy import *
data1 = mat(zeros((3,3)))
data2 = mat(ones((2,4)))
data3 = mat(random.rand(2,2))
data4 = mat(random.randint(2,8,size=(2,5)))
data5 = mat(eye(2,2,dtype=int))
14. 常見的矩陣運算
a1 = mat([1,2])
a2 = mat([[1],[2]])
a3 = a1 * a2
print(a3)
輸出:
matrix([[5]])
print(a1*2)
輸出:
matrix([[2, 4]])
a1 = mat(eye(2,2)*0.5)
print(a1.I)
輸出:
matrix([[ 2., 0.],
[ 0., 2.]])
a1 = mat([[1,2],[2,3],[4,2]])
a1.sum(axis=0)
輸出:
matrix([[7, 7]])
a1.sum(axis=1)
輸出:
matrix([[3],
[5],
[6]])
a1.max() # 求矩陣元素最大值
輸出:
4
a1.min() # 求矩陣元素最小值
輸出:
1
np.max(a1,0) # 求矩陣每列元素最大值
輸出:
matrix([[4, 3]])
np.max(a1,1) # 求矩陣每行元素最大值
輸出:
matrix([[2],
[3],
[4]])
a = mat(ones((2,2)))
b = mat(eye((2)))
c = hstack((a,b))
輸出:
matrix([[ 1., 1., 1., 0.],
[ 1., 1., 0., 1.]])
d = vstack((a,b))
輸出:
matrix([[ 1., 1.],
[ 1., 1.],
[ 1., 0.],
[ 0., 1.]])
15. 矩陣、數組、列表之間的互相轉換
aa = [[1,2],[3,4],[5,6]]
bb = array(aa)
cc = mat(bb)
cc.getA() # 矩陣轉換為數組
cc.tolist() # 矩陣轉換為列表
bb.tolist() # 數組轉換為列表
# 當列表為一維時,情況有點特殊
aa = [1,2,3,4]
bb = array(aa)
輸出:
array([1, 2, 3, 4])
cc = mat(bb)
輸出:
matrix([[1, 2, 3, 4]])
cc.tolist()
輸出:
[[1, 2, 3, 4]]
bb.tolist()
輸出:
[1, 2, 3, 4]
cc.tolist()[0]
輸出:
[1, 2, 3, 4]
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25