NumPy 数组的维度 (Dimension) 或称为 轴 (Axis) 的概念,与我们日常理解的维度非常相似。
[]
的嵌套层数来初步确定:
[]
: 一维 (1D) 数组。[]
: 二维 (2D) 数组。[]
: 三维 (3D) 数组,依此类推。# 数组的简单创建
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](空格分隔)
print(a.shape) #(6,)表示a是一个一维数组,有6个元素
print(b.shape) #(2,3)表示b是一个二维数组,有2行3列
import numpy as np
# 生成一个介于 1(包含)到 10(不包含)之间的单个随机整数
single_random_int = np.random.randint(1, 10)
print("单个随机整数:", single_random_int)
# 生成一个形状为 (2, 3),元素介于 0(包含)到 5(不包含)之间的二维数组
random_array = np.random.randint(0, 5, size=(2, 3))
print("随机整数数组:\n", random_array)
# 只提供一个参数,生成一个介于 0(包含)到 5(不包含)之间的单个随机整数
single_random_int_one_param = np.random.randint(5)
print("单个随机整数(单参数):", single_random_int_one_param)
# 生成一个位于 [0, 1) 区间内的单个随机浮点数
single_random_float = np.random.rand()
print(f"单个随机浮点数:{single_random_float}")
# 生成一个包含 5 个随机浮点数的一维数组
one_dim_array = np.random.rand(5)
print(f"一维随机浮点数数组:{one_dim_array}")
# 生成一个形状为 (2, 3) 的二维随机浮点数数组
two_dim_array = np.random.rand(2, 3)
print(f"二维随机浮点数数组:\n, {two_dim_array}")
import numpy as np
scores = np.array([5, 9, 9, 11, 11, 13, 15, 19])
scores += 1 # 在原来的scores上+1,而不是创建一个新的变量
sum = 0
for i in scores: # 遍历数组中的每个元素
sum += i
print(sum)
import numpy as np
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) #计算两个数组的除法
print(a*b) #数组的点乘
print(a @ b.T ) # 矩阵乘法,3*2的矩阵和2*3(b转置)的矩阵相乘,得到3*3的矩阵
假设array3d是一个三维数组,array3d.shape为(z,x,y),表示array3d有3个二维数组(3层平面),每个二维数组有x行和y列。
三维数组的访问:
1. 访问特定的层数(平面)
2. 访问特定的行和列
3. 访问特定的行和列范围
对于一个三维数组:
# --- 1. SHAP 特征重要性条形图 (Summary Plot - Bar) ---
print("--- 1. SHAP 特征重要性条形图 ---")
shap.summary_plot(shap_values[:, :, 0], X_test, plot_type="bar",show=False) # 这里的show=False表示不直接显示图形,这样可以继续用plt来修改元素,不然就直接输出了
plt.title("SHAP Feature Importance (Bar Plot)")
plt.show()
# shap_values[:,:,0].shape ==(1397,30)
# X_test.shape == (1397,30)
此时可以理解为什么shap.summary_plot中第一个参数是所有样本对预测类别的shap值了。
传入的 SHAP 值 (shap_values[:, :, 0]) 和特征数据 (X_test) 在维度上需要高度一致和对应。
这二者组合后,就可以组合(特征数,特征值,shap值)构成shap图的基本元素
@浙大疏锦行