Python,Numpy:无法将Numpy数组的值分配给矩阵的列
我是Python新手,有一个语法问题我正在努力理解。 我有一个numpy矩阵:Python,Numpy:无法将Numpy数组的值分配给矩阵的列,python,arrays,numpy,Python,Arrays,Numpy,我是Python新手,有一个语法问题我正在努力理解。 我有一个numpy矩阵: x = np.array([[1, 2, 3, 6], [2, 4, 5, 6], [3, 8, 7, 6]]) 我想对它的每一列应用一个Softmax函数。 代码非常简单。在不报告整个循环的情况下,假设我将其作为第一列: w = x[:,0] # select a column w = np.exp(w) # compute softmax in tw
x = np.array([[1, 2, 3, 6],
[2, 4, 5, 6],
[3, 8, 7, 6]])
我想对它的每一列应用一个Softmax函数。
代码非常简单。在不报告整个循环的情况下,假设我将其作为第一列:
w = x[:,0] # select a column
w = np.exp(w) # compute softmax in two steps
w = w/sum(w)
x[:,0] = w # reassign the values to the original matrix
但是,与w:array([0.09003057,0.24472847,0.66524096])
的值不同,只为矩阵分配了一列零,返回:
np.array([[0, 2, 3, 6],
[0, 4, 5, 6],
[0, 8, 7, 6]])
为什么呢?我怎样才能纠正这个问题?
谢谢矩阵的值类型为
int
,分配时,softmax值转换为int
,因此为零
按如下方式创建矩阵:
x = np.array([[1, 2, 3, 6],
[2, 4, 5, 6],
[3, 8, 7, 6]]).astype(float)
现在,在指定softmax值之后:
w = x[:,0] # select a column
w = np.exp(w) # compute softmax in two steps
w = w/sum(w)
x[:,0] = w # reassign the values to the original matrix
x
结果是:
array([[0.09003057, 2., 3., 6.],
[0.24472847, 4., 5., 6.],
[0.66524096, 8., 7., 6.]])
将数据类型更改为float,然后分配。