今天和大家分享下最近學習的一些numpy知識,這些都是我一個一個手動碼出來的,有興趣的同僚可以一起學習一下。
建立一維資料
建立二維數組
常用屬性
調整數組的形狀
将數組轉換成list形式
數組和數的計算
三維數組
數組的索引與切片
數組中數值的修改
數組的添加、删除與去重
numpy的計算
數組的拼接
二維數組的轉置
建立一維資料
import numpy as np
list1 = [1,2,3,4]
oneArray = np.array(list1)
print(type(oneArray))
print(oneArray)
#建立數組的形式
#1 直接傳入清單的形式
t1 = np.array([1,2,3])
print(t1)
#2 傳入range生成序列
t2 = np.array(range(100))
print(t2)
#使用numpy自帶的np.arrange()生成數組
t3 = np.arange(0,12,2)
print(t3)
建立二維數組
list2 = [[1,2],[3,4],[5,6]]
twoArray = np.array(list2)
print(twoArray)
常用屬性
#擷取形狀
print(twoArray.shape)
#有多少個元素
print(twoArray.size)
調整數組的形狀
import numpy as np
four = np.array([[1,2,3],[4,5,6]])
#修改的是原有的
# four.reshape=(6,)
# print(four)
#傳回一個新的數組
five= four.reshape(2,3)
print(five)
#多元數組變成一位數組,預設情況下‘C’是以行為主的順序展開,‘F’是以列為主的順序展開
six = four.reshape((6,),order = 'F')
print(six)
将數組轉換成list形式
import numpy as np
a = np.array([3,5,6,8,9,12])
b = a.tolist()
print(b)
print(type(b))
#将數組轉換成list形式
import numpy as np
a = np.array([3,5,6,8,9,12])
b = a.tolist()
print(b)
print(type(b))
數組和數的計算
import numpy as np
t1 = np.arange(24).reshape(3,8)
print(t1)
print(t1+2)
print(t1*2)
print(t1/2)
#數組與數組之間的操作,注意不同形狀的多元數組不能進行計算
import numpy as np
# t1 = np.arange(24).reshape((4,6))
# t2 = np.arange(100,124).reshape((4,6))
# print(t1)
# print(t2)
# print(t1+t2)
# print(t1*t2)
#行數或者列數相同的一維數組和多元數組可以進行計算
# t1 = np.arange(24).reshape((4,6))
# t2 = np.arange(0,6)
# print(t1)
# print(t2)
# print(t1-t2)
#列形狀相同(會與每一個相同次元的數組的對應位相操作)
t1 = np.arange(24).reshape((4,6))
t2 = np.arange(4).reshape((4,1))
print(t1)
print(t2)
print(t1-t2)
三維數組
import numpy as np
a = np.arange(27).reshape(3,3,3)
print(a)
b = np.sum(a,axis=0)
print(b)
數組的索引與切片
import numpy as np
a = np.arange(10)
#冒号分割切片參數 start:start:stop 來進行切片操作
print(a[2:7:2])
#如果為[2:],表示從該索引往後的所欲項目都會被提取
print(a[2:])
#多元資料的索引
import numpy as np
t1 = np.arange(24).reshape((4,6))
# print(t1)
# print("******")
# print(t1[1])
# print(t1[1:,:]) #去取連續多行
# print(t1[1:3]) #取連續多行
# print(t2[[1,2,3]]) #取不連續的多行
# print(t1[:,2]) #取一列
# print(t1[:,1:]) #取連續多列
# print(t1[2,3]) #取某一個值
# print(t1[[2,3],[2,3]]) #取多個不連續的值
#print(t[2:3])
數組中數值的修改
import numpy as np
t = np.arange(24).reshape(4,6)
print(t)
#修改某一行的值
#t[2,:] = 0
#修改某一列的值
# t[:,3] = 0
# print(t)
#連續修改多行的值
# t[1:3,:] = 0
# print(t)
#修改連續多列的值
# t[:,1:4] = 0
# print(t)
#修改多行多列的值
# t[1:4,2:3]=0
# print(t)
#修改多個不相鄰的值
# t[[2,3],[1,2]] = 0
# print(t)
#可以根據條件修改,比如講小于10的值改掉
t[t<10] = 0
print(t)
#使用邏輯判斷
# t[(t<2)&(t<6)] = 0 #與
# print(t)
# t[(t<2)|(t>6)] = 0 #或
# print(t)
# t[~(t>6)] = 0 #非
# print(t)
數組的添加、删除與去重
import numpy as np
# a = np.arange(1,7).reshape(2,3)
# print(a)
# a = np.array([[1,2,3],[4,5,6]])
# print(a)
# print('向數組添加元素')
# print(np.append(a,[7,8,9])) #axis預設為None時,是橫向加成,傳回總是一維數組!
# print('\n')
# print('沿軸0添加元素')
# print(np.append(a,[[7,8,9]],axis = 0))
# print('沿軸1添加元素')
# print(np.append(a,[[5,5,5],[7,7,7]],axis = 1))
#numpy.insert 函數在給定索引之前,沿給定軸在輸入數組中插入值
#如果值的類型轉換為要插入,則它與輸入數組不同,插入沒有原地的,函數會傳回一個新數組。此外,如果未提供軸,則輸入數組會被展開
a = np.array([[1,2],[3,4],[5,6]])
print(a)
print('未傳遞Axis參數,在插入前輸入數組會被展開')
print(np.insert(a,4,[11,12]))
print('\n')
print('傳遞了Axis參數,會廣播值數組來配輸入數組')
print('沿軸0廣播:')
print(np.insert(a,1,[11],axis = 0))
print('沿軸1廣播:')
print(np.insert(a,1,[11],axis = 1))
#數組中的删除
import numpy as np
a = np.arange(12).reshape(3,4)
print('未傳遞axis參數,在删除之前數組會被展開')
print(np.delete(a,1))
print('删除每一行中的第二列')
print(a)
print(np.delete(a,1,axis = 1))
#數組去重
#numpy.unique() 函數用于去除數組中的重複元素
'''
arr:輸入一維數組,如果不是一維數組則會被展開
return_index:如果為True,傳回新清單元素則在舊清單中的位置(下标),并以清單形式存儲
return_inserve:如果為true,傳回舊清單元素則在新清單中的位置(下标),并以清單形式存儲
return_counts:如果為true,傳回去重值的元素在原數組中出現的次數
'''
import numpy as np
a = np.array([2,3,4,7,7,8,9,5,4,6,7,8,])
print('第一個數組是:')
print(a)
print('第一個數組的去重值')
u = np.unique(a)
print(u)
# print('去重數組的索引數組:')
# u,indices = np.unique(a,return_index = True)
# print(indices)
print('去重數組的下标')
u,indices = np.unique(a,return_inverse = True)
print(indices)
print('傳回去重元素的重複數量')
u,indices = np.unique(a,return_counts = True)
print(u)
print(indices)
numpy的計算
import numpy as np
score = np.array([[86,88],[89,87],[66,68]])
print(score)
#擷取所有資料的最大值
# result = np.max(score)
# print(result)
#擷取某一軸上的最大值
# result= np.max(score,axis = 1)
# print(result)
#擷取最小值
# result = np.min(score)
# print(result)
#擷取某一軸上的最小值
# result = np.min(score,axis = 0)
# print(result)
#數組的比較
# result = np.maximum([-2,-1,0,1,2],0) #第一個參數中的每一個值與第二個參數的值作比較傳回最大的值
# print(result)
# result = np.minimum([-2,-2,-1,-3],0)#第一個參數中的每一個值與第二個參數的值作比較傳回最小的值
# print(result)
# result = np.maximum([-2,-3,-1,-4],[-2,-3,-5,8]) #接受的2個參數,也可以大小不一緻
# print(result)
#求平均值
# result = np.mean(score)
# print(result)
#傳回給定axis上的累計和
# arr = np.array([[1,2,3],[4,5,6]])
# print(arr)
# print(arr.cumsum(0))
# print(arr.cumsum(1))
#求最小索引值
# result = np.argmin(score,axis = 0)
# print(result)
#求每一列的标準差
# result = np.std(score,axis = 0)
# print(result)
#求極值
result = np.ptp(score)
print(result)
數組的拼接
import numpy as np
#1、根據軸連接配接的數組序列
a = np.array([[2,3],[4,5]])
b = np.array([[6,7],[8,9]])
# #要求次元相同
# print('沿軸0連接配接2個數組')
# print(np.concatenate((a,b),axis = 0))
# print('沿軸1連接配接2個數組')
# print(np.concatenate((a,b),axis = 1))
#2、根據軸進行堆疊
# print('沿軸0連接配接2個數組')
# print(np.stack((a,b),axis = 0))
# print('沿軸1連接配接2個數組')
# print(np.stack((a,b),axis = 1))
#3、矩陣垂直拼接
v1 = np.arange(0,12).reshape(2,6)
v2 = np.arange(12,24).reshape(2,6)
result = np.vstack((v1,v2))
print(result)
#4矩陣水準拼接
result = np.hstack((v1,v2))
print(result)
二維數組的轉置
#對換數組的次元
a = np.arange(12).reshape(3,4)
# print('原數組:')
# print(a)
# print('對換數組')
# print(np.transpose(a))
#與transpose一緻
a = np.arange(12).reshape(3,4)
print('原數組:')
print(a)
print('\n')
print('轉置數組')
print(a.T)
#函數用于交換數組的2個軸
a = np.arange(24).reshape(4,6)
re = a.swapaxes(1,0)
print(a)
print(re)