Python 从pandas系列和csr矩阵并行填充Ndaray

Python 从pandas系列和csr矩阵并行填充Ndaray,python,pandas,numpy,sparse-matrix,Python,Pandas,Numpy,Sparse Matrix,目前使用for循环将pandas系列(category/object dtype)和csr矩阵(numpy)中的值填充到ndarray,我希望加快速度 Sequential for loop(有效)、numba(不喜欢序列和字符串)、joblib(比Sequential loop慢)、swifter.apply(速度慢得多,因为我必须使用pandas,但它可以并行化) 将熊猫作为pd导入 将numpy作为np导入 从scipy.sparse导入rand nr_匹配=10**5 name_vect

目前使用for循环将pandas系列(category/object dtype)和csr矩阵(numpy)中的值填充到ndarray,我希望加快速度

Sequential for loop(有效)、numba(不喜欢序列和字符串)、joblib(比Sequential loop慢)、swifter.apply(速度慢得多,因为我必须使用pandas,但它可以并行化)

将熊猫作为pd导入
将numpy作为np导入
从scipy.sparse导入rand
nr_匹配=10**5
name_vector=pd.Series(pd.util.testing.rands_数组(10,nr_匹配))
匹配=兰德(nr_匹配,10,密度=0.2,格式='csr')
非零=匹配项。非零()
sparserows=非零[0]
sparsecols=非零[1]
左侧=np.empty([nr\u匹配],数据类型=对象)
右侧=np.empty([nr\u匹配],dtype=object)
相似性=np.零(nr_匹配)
对于范围内的索引(0,nr_匹配):
左侧[index]=name\u vector.iat[sparserows[index]]
右侧[index]=name\u vector.iat[sparsecols[index]]
相似性[索引]=匹配项。数据[索引]
没有错误消息,但这是缓慢的,因为它使用一个线程

如前所述,切片直接起作用

matches_df["left_side"] = name_vector.iloc[sparserows].values
matches_df["right_side"] = name_vector.iloc[sparsecols].values
matches_df["similarity"] = matches.data

你不能简单地切片-
name\u vector.iloc[sparserows[:nr\u matches]]。值
以获得
左侧
。类似地,对于
sparsecols
和相似性:
匹配。数据[:nr_匹配]