python - Python,Numpy:无法将 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 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.]])
推荐阅读
- vba - VBA复选框范围到表
- javascript - 如何在 Webstorm 中安装 ReactJS
- java - 如何从 Java 中的字符串列表中为游戏的世界地图绘制平面图
- vb.net - windows窗体组件阻止建筑项目
- asp.net-mvc - 确定 Web 应用程序的安全性
- verilog - Verilog:乘以无符号符号
- c# - UpdatePanel 中的 FileUpload 和 Button Click 刷新页面
- powershell - PS 脚本正在导出一个空的 CSV
- solr - Solr 使用常数分数查询的产品提升:如何使用 filterCache?
- reactjs - 如何在 React 中使用 FileReader?