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)