Python np.行轴未在Numpy中工作的总和

Python np.行轴未在Numpy中工作的总和,python,numpy,matrix,machine-learning,softmax,Python,Numpy,Matrix,Machine Learning,Softmax,我编写了一个softmax回归函数def softmax_1(x),它基本上接受一个m x n矩阵,对矩阵求幂,然后对每列的指数求和 x = np.arange(-2.0, 6.0, 0.1) scores = np.vstack([x, np.ones_like(x), 0.2 * np.ones_like(x)]) #scores shape is (3, 80) def softmax_1(x): """Compute softmax values for each sets o

我编写了一个softmax回归函数
def softmax_1(x)
,它基本上接受一个
m x n
矩阵,对矩阵求幂,然后对每列的指数求和

x = np.arange(-2.0, 6.0, 0.1)
scores = np.vstack([x, np.ones_like(x), 0.2 * np.ones_like(x)])
#scores shape is (3, 80)

def softmax_1(x):
    """Compute softmax values for each sets of scores in x."""
    return(np.exp(x)/np.sum(np.exp(x),axis=0))
将其转换为数据帧,我必须进行转置

DF_activation_1 = pd.DataFrame(softmax_1(scores).T,index=x,columns=["x","1.0","0.2"])
所以我想尝试制作一个版本的softmax函数,它接受转置版本并计算softmax函数

scores_T = scores.T
#scores_T shape is (80,3)

def softmax_2(y):
    return(np.exp(y/np.sum(np.exp(y),axis=1)))

DF_activation_2 = pd.DataFrame(softmax_2(scores_T),index=x,columns=["x","1.0","0.2"])
然后我得到这个错误:

Traceback (most recent call last):
  File "softmax.py", line 22, in <module>
    DF_activation_2 = pd.DataFrame(softmax_2(scores_T),index=x,columns=["x","1.0","0.2"])
  File "softmax.py", line 18, in softmax_2
    return(np.exp(y/np.sum(np.exp(y),axis=1)))
ValueError: operands could not be broadcast together with shapes (80,3) (80,) 
回溯(最近一次呼叫最后一次):
文件“softmax.py”,第22行,在
DF_activation_2=pd.DataFrame(softmax_2(分数),索引=x,列=[“x”,“1.0”,“0.2”])
文件“softmax.py”,第18行,在softmax_2中
返回值(np.exp(y/np.sum)(np.exp(y),axis=1))
ValueError:操作数无法与形状(80,3)(80,)一起广播
当我在
np.sum
方法中转置和切换轴时,为什么这不起作用

np.exp(y/np.sum(np.exp(y),axis=1))


这意味着
np.sum
将返回一个shape
(80,1)
数组,而不是
(80,)
,该数组将为除法正确广播。还请注意括号结尾处的更正。

嘿,感谢您的快速响应,为什么我的行在换位后不再总和为1?
DF_激活_1
的第一行是
0.033211 0.667060 0.299729
,而
DF_激活_2
的第一行是
0.612139 1.278129 1.050304
我会处理它,它们的总和仍然大于1。当我弄明白的时候,我会让你知道的。把关于括号的评论作为一个单独的答案放到了上面的答案中。
np.exp(y)/np.sum(np.exp(y),axis=1, keepdims=True)