numpy.1
import numpy as np
a = np.arange(4)
print(a)
#生成的是一個(gè)從0開始的4個(gè)值的數(shù)列
#[0 1 2 3]
a = np.arange(4).reshape((2,2))
print(a)
print(a.shape)
#判斷矩陣的樣式(2, 2)代表2行2列
#生成一個(gè)2行2列的矩陣
#[[0 1]
# [2 3]]
a = np.arange(4).reshape((2,2))
print(a)
print(np.sum(a,axis = 0))#axis = 0 代表按列相加 axis=1代表按行
'''[[0 1]
[2 3]]'''
#[2 4] 返回一個(gè)array
print(np.max(a))#找到其中最大的值
print(np.min(a))#找到最小的值
print(np.max(a,axis = 0))#按列找出每一列的最大值
print(np.min(a,axis = 0))#同上
b = np.arange(12).reshape((3,4))
print(b)
print(np.argmax(b,axis = 1))#[3 3 3] 按照行將每一行的最大的值的位置返回一個(gè)數(shù)列
print(b.mean())#算出所有值的 平均值
print(np.cumsum(b))
#[ 0 1 3 6 10 15 21 28 36 45 55 66]
#將每一個(gè)值遞加 并返回
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
d = np.random.random((2,3)) * 10 - 3
#可以看到隨機(jī)生成的一個(gè)2行3列的矩陣并且對矩陣的運(yùn)算是對每一個(gè)元素的計(jì)算
print(d)
print(d.shape)#(2, 3)
print(np.transpose(d)#對矩陣的轉(zhuǎn)置 transpose
print(d.T)#對矩陣的轉(zhuǎn)置
'''
[[ 3.79442884 2.65870034 2.96206461]
[-1.91460778 1.11432605 2.06610598]]
'''
'''
[[-0.27988317 -2.06762975 -1.91392339]
[-1.44516069 -1.55149608 6.53402984]]
(2, 3)
[[-0.27988317 -1.44516069]
[-2.06762975 -1.55149608]
[-1.91392339 6.53402984]]
'''
d = np.arange(12).reshape((3,4))
a = np.arange(4).reshape((4,1))
print(d)
print(a)
print(d.dot(a))#矩陣的乘法d 在前
print(np.mean(d,axis = 0))
print(np.mean(d,axis = 1))
#[ 4. 5. 6. 7.]按照列來求平均值返回4列的平均值
#[ 1.5 5.5 9.5]按照行來求返回3行
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[0]
[1]
[2]
[3]]
[[14]
[38]
[62]]
'''
A = np.arange(4,14).reshape(2,5)
print(A)
print(A[1])#按行來取出數(shù)據(jù)
print(A[1,1:3])#取出矩陣中的更加具體的一些值
print(A[0:,1:3])#從矩陣中取出矩陣
'''
[[ 5 6]
[10 11]]
'''
print(A.flatten())
'''
[[ 4 5 6 7 8]
[ 9 10 11 12 13]]'''
[ 9 10 11 12 13]
[10 11]
[ 4 5 6 7 8 9 10 11 12 13]
numpy.2
增加維度
正常來說a如果單純?yōu)橐粋€(gè)list的話[ ]*3 代表‘復(fù)制’如下面的d所示
所以利用np.array 變成數(shù)列可以進(jìn)行運(yùn)算
但是還是不夠,需要變成向量(矩陣)
list => array => matrix(vector)
a = np.array([1,1,1])
b = a*3
c = [1,1,1]
d = c * 3
print(b)#[3 3 3]
print(d) # [1, 1, 1, 1, 1, 1, 1, 1, 1]
a 變成 array 之后 利用[np.newaxis,:] 變成一個(gè)一行一列的向量
[np.newaxis,:] 表示的意思是:在行上增加一個(gè)緯度,列上選擇所有列
[np.newaxis,0:1]:則是意思選出一列從0到1不包括1 在行增加一個(gè)維度
[0:2,np.newaxis] :按行取取出的一行中的每一個(gè)元素 ,增加一個(gè)維度
a = np.array([1,2,3])[np.newaxis,0:1]
print(a) # [[1]]
b = np.array([1,2,3])[0:2,np.newaxis]
'''
[[1]
[2]]
'''
a = np.array([1,2,3])[np.newaxis,:]#array => vector
#[[1,2,3]]
print(a.T)
c = np.array([4,5,6])[np.newaxis,:]
d = np.array([11,11,11])
print(d)
print(a)
'''
[[1]
[2]
[3]]
[11 11 11]
[[1 2 3]]
'''
矩陣的組合
三行一列的矩陣a 和 c
分別按照行 axis = 1 (行) 和 axis = 0 (列) 組合
按行組合就是直接加到右側(cè)(要求相同的行數(shù))
按列就是直接加到下側(cè)(要求相同的列數(shù))
a = np.array([1,2,3]).reshape((3,1))
print(a)
c = np.array([4,5,6]).reshape((3,1))
print(c)
print(np.concatenate((a,c),axis = 1))
print(np.concatenate((a,c),axis = 0)
'''
#(3,2)shape
[[1 4]
[2 5]
[3 6]]
#(6,1)shape
[[1] [2] [3] [4] [5] [6]]
'''
hstack 代表的是 concatenate 的axis = 1(行合并)
vstack 代表的是 concatenate 的axis = 0(列合并)
d = np.hstack((a,c))
print(d)
e = np.vstack((a,c))
print(e)
還可以實(shí)現(xiàn)多個(gè) 矩陣的組合
a = np.array([1,2,3]).reshape((3,1))
c = np.array([4,5,6]).reshape((3,1))
d = np.hstack((a,c))
e = np.hstack((a,c,d))#(a,c,d) this tuple can have many matrix!
print(e)
矩陣的分割
np.split(a,3,axis = 0)三個(gè)參數(shù)
a: 要被分割的矩陣
3:分割的份數(shù)必須是在被分割維度上可以整除
axis = 1(被保留的是行數(shù)【分割后行數(shù)不變】,就是說按列分割)
axis = 0(被保留的是列數(shù)【分割后列數(shù)不變】,就是說按行分割)
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,3,axis = 0))
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
#[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
#注意返回值是一個(gè)一個(gè)的array里面包含著matrix
另外一種分割方式
hsplit : 和axis = 1的情況一樣 都是保留行數(shù)的分割方式
同理 還有vsplit
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,2,axis = 1))
print(np.hsplit(a,2)
copy
a = np.arange(4)
b = a
c = a.copy()
if b is a:
print('b is a')
if c is a:
print('c is a')