【bug解决】AxisError: axis 1 is out of bounds for array of dimension 1
·
目录
一、报错代码
在求一维行矩阵最大值时:
import numpy as np
def softmax(a):
c = np.max(a, axis=1)
exp_a = np.exp(a - c)
sum_a = np.sum(exp_a)
soft = exp_a / sum_a
return soft
a = np.array([1010, 1000, 990])
y = softmax(a)
print(y)
会出现报错:
二、问题分析
这是因为a是一维数据,只有一个维度,也就是axis=0,不存在axis=1
因此,在对一维数组求最大值时,不需要再添加axis=1:
import numpy as np
def softmax(a):
c = np.max(a)
exp_a = np.exp(a - c)
sum_a = np.sum(exp_a)
soft = exp_a / sum_a
return soft
a = np.array([1010, 1000, 990])
y = softmax(a)
print(y)
结果:
三、进一步讨论
对于多维数组,还是要添加的:
import numpy as np
exemple=np.arange(9).reshape((3,3))
print(exemple)
#输出
#[[0 1 2]
# [3 4 5]
# [6 7 8]]
#全矩阵最大值 8
print(exemple.max())
#等价于:
#print(np.max(exemple))
#列最大值 输出:[6 7 8]
print(np.max(exemple,axis=0))
#行最大值 输出:[2 5 8]
print(np.max(exemple,axis=1))
#全矩阵最大值 索引
print(np.where(exemple==exemple.max()))
#输出
#(array([2], dtype=int64), array([2], dtype=int64))
四、总结
bug顺利解决啦!!!
更多推荐
已为社区贡献5条内容
所有评论(0)