Python的科学计算库NumPy(二)

发布于:2025-06-29 ⋅ 阅读:(22) ⋅ 点赞:(0)

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)

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到