本文目錄一覽:
- 1、為什麼python數組不用qp=[[0]*4]*4
- 2、python定義一個單字節類型數組
- 3、怎樣用python將數組裡的數從高到低排序
- 4、python自帶及pandas、numpy數據結構(一)
為什麼python數組不用qp=[[0]*4]*4
因為沒有這個數組類型。
Python中的數組類型有六種,有list可變的動態列表,tuple不可變的列表,array數組是可變的,存儲相同類型的數值,不能存儲對象,字符串序列str數組,bytes對象數組,bytearray對象數組,所以沒有qp這個數組類型,所以才不能用qp等於這個數組。
python定義一個單字節類型數組
Python中沒有數組的數據結構,但列表很像數組。
和字符串一樣,字節類型也是不可變序列,而字節數組就是可變版本的字節,它們的關係就相當於list與tuple。
字節(字節數組)是二進制數據組成的序列,其中每個元素由8bit二進制即1byte亦即2位十六進制數亦亦即0~255組成,字節是計算機的語言,字符串是人類語言,它們之間通過編碼表形成一一對應的關係。
怎樣用python將數組裡的數從高到低排序
1、首先我們定義一個列表輸入一串大小不一的數字。
2、可以用sort()方法對定義的列表排序,注意,sort只是對列表排序,它沒有返回一個值。
3、輸入print列表名即可得到排序後的列表數據。
4、倒序可以用這個reverse方法,把元素位置倒轉過來。
5、然後再次print列表名,這樣就會得到倒轉順序之後的列表數據。
5、如圖兩相對比即實現了從高到低和從低到高排序。
python自帶及pandas、numpy數據結構(一)
1.python自帶數據結構:序列(如list)、映射(如字典)、集合(set)。
以下只介紹序列中的list:
創建list:
list1 = []
list1 = [1,2,3,4,5,6,7,8,9] #逗號隔開
list2 = [[1,2],[3,4],[5,6],[7,8]] #list2長度(len(list2))為2,list2[0] = [1,2]
liststring = list(“thisisalist”) #只用於創建字符串列表
索引list:
e = list1[0] #下標從零開始,用中括號
分片list:
es = list1[0:3]
es = list1[0:9:2] #步長在第二個冒號後
list拼接(list1.append(obj)、加運算及乘運算):
list長度:
list每個元素乘一個數值:
list2 = numpy.dot(list2,2)
list類似矩陣相乘(每個元素對應相乘取和):
list3 = numpy.dot(list1,list1)
#要求相乘的兩個list長度相同
list3 = numpy.dot(list2,list22)
#要求numpy.shape(list2)和numpy.shape(list22)滿足“左行等於右列”的矩陣相乘條件,相乘結果numpy.shape(list3)滿足“左列右行”
2.numpy數據結構:
Array:
產生array:
data=np.array([[1, 9, 6], [2, 8, 5], [3, 7, 4]])
data=np.array(list1)
data1 = np.zeros(5) #data1.shape = (5,),5列
data1 = np.eye(5)
索引array:
datacut = data[0,2] #取第零行第二列,此處是6
切片array:
datacut = data[0:2,2] # array([6, 5])
array長度:
data.shape
data.size
np.shape(data)
np.size(data)
len(data)
array拼接:
#括號內也有一個括號(中括號或者小括號)!
d = np.concatenate((data,data))
d = np.concatenate((data,data),axis = 1) #對應行拼接
array加法:逐個相加
array乘法:
d = data data #逐個相乘
d = np.dot(data,data) #矩陣相乘
d = data 3 #每個元素乘3
d = np.dot(data,3) #每個元素乘3
array矩陣運算:
取逆 : np.linalg.inv(data)
轉置:data.T
所有元素求和 : np.sum(data)
生成隨機數:np.random.normal(loc=0, scale=10, size=None)
生成標準正態分布隨機數組:np.random.normal(size=(4,4))
生成二維隨機數組:
np.random.multivariate_normal([0,0],np.eye(2))
生成範圍在0到1之間的隨機矩陣(M,N):
np.random.randint(0,2,(M,N))
Matrix:
創建matrix:
mat1 = np.mat([[1, 2, 3], [4, 5, 6]])
mat1 = np.mat(list)
mat1 = np.mat(data)
matrix是二維的,所有+,-,*都是矩陣操作。
matrix索引和分列:
mat1[0:2,1]
matrix轉置:
np.transpose(mat1)
mat1.transpose()
matrix拼接:
np.concatenate([mat1,mat1])
np.concatenate([mat1,mat1],axis = 1)
numpy數據結構總結:對於numpy中的數據結構的操作方法基本相同:
創建:np.mat(list),np.array(list)
矩陣乘:np.dot(x,y)
轉置:x.T or np.transpose(x)
拼接:np.concatenate([x,y],axis = 1)
索引:mat[0:1,4],ary[0:1,4]
3.pandas數據結構:
Series:
創建series:
s = pd.Series([[1,2,3],[4,5,6]],index = [‘a’,‘b’])
索引series:
s1 = s[‘b’]
拼接series:
pd.concat([s1,s1],axis = 1) #也可使用s.append(s)
DataFrame:
創建DaraFrame:
df = pd.DataFrame([[1,2,3],[1,2,3]],index = [‘a’,’b’],columns = [‘x’,’y’,’z’])
df取某一列:
dfc1 =df.x
dfc1 = df[‘x’]
dfc2 = df.iloc[:,0] #用.iloc方括號里是數字而不是column名!
dfc2 = df.iloc[:,0:3]
df取某一行:
dfr1 = df.iloc[0]
df1 = df.iloc[0:2]
df1 = df[0:2] #這種方法只能用於取一個區間
df取某個值:
dfc2 = df.iloc[0,0]
dfc2 = df.iloc[0:2,0:3]
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/158302.html