5. 索引和切片
5.1 一維數組的索引和切片
import numpy as np# 一維數組索引和切片,跟python中的集合同樣使用
bin_list=[1,2,3,4,5,6]
bin_array=np.array(bin_list)
print(bin_array[3])
print(bin_array[1:4])
print(bin_array[-2:-1])
5.2 多維數組的索引
# 多維數組的索引
bin_list2=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]
bin_array2=np.array(bin_list2)
print(bin_array2[1])
print(bin_array2[1,1]) #等同于bin_array2[1][1],集合不支持[1,1]
5.3 多維數組的切片
# 多維數組的切片
bin_list2=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]
bin_array2=np.array(bin_list2)print(bin_array2[1:3, 2]) #取了二維數組中的第1~2個一維數組,然后取這兩個一維數組中第2個元素組成了一個一維數組
print(bin_array2[1:3, 0:2]) #取了二維數組中的第1~2個一維數組,然后取這兩個一維數組中第0~2個元素組成了一個二維數組
6. 數組的賦值
# 數組的賦值
bin_list2=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]
bin_array2=np.array(bin_list2)bin_array2[2,1]=100
print(bin_array2)
print('-------------------')bin_array2[2]=[10,20,30,40,50]
print(bin_array2)
7. 數組的其他方法
### 數組元素數據類型轉換
bin_array = np.array([1,2,3,4,5])
bin_array2 = np.asarray(bin_array,dtype = np.float32) # 此方法不會改變原來數組的元素,而是生成一個新數組
print(bin_array)
print(bin_array2)bin_array3=bin_array.astype(dtype = np.float32) #數組本身的方法也能達到同樣的效果
print(bin_array)
print(bin_array3)### 數組特有的獲取元素的方法
bin_list=[6,3,8,9,5,7]
bin_array=np.array(bin_list)
mask = [True,False,True,False,False,False]
print(bin_array[mask])### 獲取到符合條件的元素的索引,獲取到的值是一個元組
mask = np.where(bin_array > 7)
print(mask)
print(type(mask))# 然后用這個索引去獲取索引位置的元素
print(bin_array[mask])bin_array2=np.array([[4,6,2],[3,8,9],[8,2,6]])
mask2 = np.where(bin_array2 > 7)
print(mask2)
print(type(mask2))
8. 數組的數值計算
### 數組的求和
# 一維數組
bin_array = np.arange(0,10,1)
print(bin_array)
print(bin_array.sum())#二維數組
bin_array.shape = 2,5
print(bin_array)
print(bin_array.sum()) # 所有元素的總和
print(bin_array.sum(axis=0)) # 所有列的綜合
print(bin_array.sum(axis=1)) # 所有行的綜合# 多維數組
bin_array = np.arange(0,27,1)
bin_array.shape = 3,3,3
print(bin_array)
print(bin_array.sum()) # 所有元素的總和
print(bin_array.sum(axis=0)) # 三位數組想象成一個立方體,求和就像是在某個二維平面的投影,所以總共有3個這樣的平面
print(bin_array.sum(axis=1))
print(bin_array.sum(axis=2))
### 數組的乘積
bin_array = np.arange(1,11,1)
print(bin_array)
print("數組乘積為:%s" % bin_array.prod())### 最大值
print("數組最大值為:%s" % bin_array.max())### 最小值
print("數組最小值為:%s" % bin_array.min())### 平均值
print("數組平均值為:%s" % bin_array.mean())### 標準差
print("數組標準差為:%s" % bin_array.std())### 方差
print("數組方差為:%s" % bin_array.var())### 找到最大值索引
print("數組最大值索引為:%s" % bin_array.argmax())### 找到最小值索引
print("數組最小值索引為:%s" % bin_array.argmin())### 替換最小值和最大值,即保持數組中的所有元素都在2~7這個范圍,把小于2的數字全部替換成2,把大于7的數字都替換成7
bin_array2 = bin_array.clip(2,7) # 可以看到這個方法也沒有去修改原來的數組,而是新生成了一個數組
print(bin_array2)# 小數向上取整
bin_array=np.array([2.56,7.99,3.45,7.12])
bin_array2 = bin_array.round()
print(bin_array2)# 指定小數位數
bin_array2 = bin_array.round(decimals=1)
print(bin_array2)