首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于其他列将数据列转换为numpy数组或张量

基于其他列将数据列转换为numpy数组或张量
EN

Stack Overflow用户
提问于 2021-03-07 00:10:51
回答 1查看 214关注 0票数 4

考虑一下数据格式,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = pd.DataFrame({'r': [1, 1, 2, 2], 'c': [0, 2, 1, 2], 'v': [2, 4, 3, 5],})

我想提取一个numpy数组或张量,将'r‘和'c’作为矩阵的行和列索引。因此相应的矩阵将类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
arr = array([[0, 0, 0],
   [2, 0, 4],
   [0, 3, 5]])

那么,是否有一种很好的方法来做到这一点,或者我必须循环遍历每个df行?从像arr这样的矩阵中提取数据基df怎么样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-07 00:22:10

要从dataframe创建一个numpy数组,将rc作为rowcolumn索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r, c, v = df.T.values
arr = np.zeros((r.max() + 1, c.max() + 1))
arr[r, c] = v

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> arr

array([[0., 0., 0.],
       [2., 0., 4.],
       [0., 3., 5.]])

要像上面这样从numpy数组重新创建数据,可以使用获取非零元素的索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r, c = np.nonzero(arr)
df = pd.DataFrame({'r': r, 'c': c, 'v': arr[r, c]})

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> df

   r  c    v
0  1  0  2.0
1  1  2  4.0
2  2  1  3.0
3  2  2  5.0
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66514435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文