繁体   English   中英

pandas 数据框到 numpy 数组而无需循环

[英]pandas dataframe to numpy array without loop

我有一个数据框和一个二维矩阵。

数据框有 3 列:

  • 矩阵的行索引
  • 矩阵的列索引
  • 矩阵的值

我需要根据行和列索引将这些值放入矩阵中。 目前,我通过遍历整个数据框来做到这一点:

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt

h,w=25,30 # dimensions of the matrix

df=pd.DataFrame(
    {
     'row':[1,5,2,4,6,7,15,20],
     'col':[3,15,22,29,16,12,25,1],
     'val':[444,2313,100,21,159,4102,225,2221]
     }
    )

# now I'm filling the matrix with values with for loop...

mat=np.zeros((h,w))
for i in range(df.shape[0]):
    row,col,val=df.loc[i,['row','col','val']]
    mat[row,col]=val
    
plt.imshow(mat)

有没有办法在没有循环的情况下做到这一点?

使用numpy索引:

mat = np.zeros((h, w))
mat[df['row'], df['col']] = df['val']

阴谋


完整性检查:

mat = np.zeros((h, w))
mat[df['row'], df['col']] = df['val']

mat2 = np.zeros((h, w))
for i in range(df.shape[0]):
    row, col, val = df.loc[i, ['row', 'col', 'val']]
    mat2[row, col] = val

print((mat == mat2).all())  # True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM