Python打卡训练营学习记录Day16

import numpy as np
a = np.array([2,4,6,8,10,12]) # 创建一个一维数组
b = np.array([[2,4,6],[8,10,12]]) # 创建一个二维数组
print(a)
print(b)
# 分清楚列表和数组的区别
print([7, 5, 3, 9])  # 输出: [7, 5, 3, 9](逗号分隔)
print(np.array([7, 5, 3, 9]))  # 输出: [7 5 3 9](空格分隔)
a.shape # numpy中可以用shape来查看数组的形状
zeros = np.zeros((2, 3)) # 创建一个2行3列的全零矩阵
zeros
ones = np.ones((3,))  # 创建一个形状为(3,)的全1数组
ones
# 顺序数组的创建
arange = np.arange(1, 10) # 创建一个从1到10的数组
arange
# 创建一个2*2的随机数组c,区间为[0,1)
c = np.random.rand(2, 2)  
c
np.random.seed(42)  # 设置随机种子以确保结果可重复
# 生成10个语文成绩(正态分布,均值75,标准差10)
chinese_scores = np.random.normal(75, 10, 10).round(1)
# 找出最高分和最低分及其索引
max_score = np.max(chinese_scores)
max_index = np.argmax(chinese_scores)
min_score = np.min(chinese_scores)
min_index = np.argmin(chinese_scores)
print(f"所有成绩: {chinese_scores}")
print(f"最高分: {max_score} (第{max_index}个学生)")
print(f"最低分: {min_score} (第{min_index}个学生)")
scores = np.array([5, 9, 9, 11, 11, 13, 15, 19])
scores += 1 # 学习一下这个写法,等价于 scores = scores + 1
sum = 0
for i in scores: # 遍历数组中的每个元素
    sum += i   
print(sum)
scores
a = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([[7, 8], [9, 10], [11, 12]])
print(a)
print(b)
print(a + b) # 计算两个数组的和
print(a - b) # 计算两个数组的差
print(a / b) # 计算两个数组的除法
a * b
a @ b.T
arr1d = np.arange(10)  # 数组: [0 1 2 3 4 5 6 7 8 9]
arr1d
# 1. 取出数组的第一个元素。
arr1d[0]
# 取出数组的最后一个元素。-1表示倒数第一个元素。
arr1d[-1]
# 3. 取出数组中索引为 3, 5, 8 的元素。
# 使用整数数组进行索引,可以一次性取出多个元素。语法是 arr1d[[index1, index2, ...]]。
arr1d[[3, 5, 8]]
# 切片取出索引
arr1d[2:6] # 取出索引为2到5的元素(不包括索引6的元素,取左不取右)
# 取出数组中从头到索引 5 (不包含 5) 的元素。
# 使用切片 slice [:stop]
arr1d[:5]
# 取出数组中从索引 4 到结尾的元素。
# 使用切片 slice [start:]
arr1d[4:]
# 取出全部元素
arr1d[:]
# 7取出数组中所有偶数索引对应的元素 (即索引 0, 2, 4, 6, 8)。
# 使用带步长的切片 slice [start:stop:step]
arr1d[::2]
# 数组:
arr2d = np.array([[1, 2, 3, 4],
                [5, 6, 7, 8],
                [9, 10, 11, 12],
                [13, 14, 15, 16]])
arr2d
# 取出第 1 行 (索引为 1) 的所有元素。
# 使用索引 arr[row_index, :] 或 arr[row_index]
arr2d[1, :]
# 也可以省略后面的 :
arr2d[1]
# 取出第 2 列 (索引为 2) 的所有元素。
# 使用索引 arr[:, column_index]
arr2d[:, 2]
# 取出位于第 2 行 (索引 2)、第 3 列 (索引 3) 的元素。
# 使用 arr[row_index, column_index]
arr2d[2, 3]
# 取出由第 0 行和第 2 行组成的新数组。
# 使用整数数组作为行索引 arr[[row1, row2, ...], :]
arr2d[[0, 2], :]
# 取出由第 1 列和第 3 列组成的新数组。
# 使用整数数组作为列索引 arr[:, [col1, col2, ...]]
arr2d[:, [1, 3]]
# 取出一个 2x2 的子矩阵,包含元素 6, 7, 10, 11。
# 使用切片 slice arr[row_start:row_stop, col_start:col_stop]
arr2d[1:3, 1:3]
arr3d = np.arange(3 * 4 * 5).reshape((3, 4, 5))
arr3d 
# 选择特定的层
# 使用整数数组 [0, 2] 作为第一个维度 (层) 的索引
arr3d[1, :, :]
arr3d[1, 0:2, :]
arr3d[1, 0:2, 2:4]
# 三个维度
# 第一个维度是样本数
# 第二个维度是特征数
# 第三个维度是类别数
shap_values.shape # (样本数, 特征数, 类别数)
# 此时可以理解为什么shap.summary_plot中第一个参数是所有样本对预测类别的shap值了。
# 传入的 SHAP 值 (shap_values[:, :, 0]) 和特征数据 (X_test) 在维度上需要高度一致和对应。
# - shap_values[:, :, 0] 的每一行代表的是 一个特定样本每个特征对于预测类别的贡献值(SHAP 值)。缺乏特征本身的值
# - X_test 的每一行代表的也是同一个特定样本的特征值。
# 这二者组合后,就可以组合(特征数,特征值,shap值)构成shap图的基本元素
# 上面这些就是我对于shap图的理解,去年很多同学在这里经常和我说是借助ai没办法对这里debug,实际上是因为没有理解shap

 

a = np.array([[1, 2], [3, 4], [5, 6]])

b = np.array([[7, 8], [9, 10], [11, 12]])

a @ b.T # 矩阵乘法,3*2的矩阵和2*3的矩阵相乘,得到3*3的矩阵

array([[ 23, 29, 35], [ 53, 67, 81], [ 83, 105, 127]])不太懂这里怎么得出来的

@浙大疏锦行 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值