【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)

会出现报错:

【bug解决】AxisError: axis 1 is out of bounds for array of dimension 1_第1张图片


二、问题分析

 这是因为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)

结果:

【bug解决】AxisError: axis 1 is out of bounds for array of dimension 1_第2张图片


三、进一步讨论

 对于多维数组,还是要添加的:

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顺利解决啦!!!

你可能感兴趣的:(bug,numpy,python)