我试图生成一个大的2D numpy NxN数组(larr),其中每个单元格都包含字符串元素(控制器名称)列表(a或b)之间的交集(c),这些元素既属于行(公司I)表示的单元,也属于列(公司j)表示的单元。列表(a和b)取自另一个数组(marray),其中公司由“nfirm”列中1到N之间的整数标识。我对矩阵的对角线不感兴趣(我用NaN代替)。你知道吗
我提出了下面的嵌套循环,但是它非常慢而且占用内存。我想知道是否有可能通过广播工会的行动来更有效地进行这项工作。任何提示,以改善它是非常感谢。谢谢!你知道吗
larr = np.empty(shape=(N,N), dtype=object)
for i in range(1,N):
for j in range(1,N):
a= marray['listdir'][marray['nfirm']==i].tolist()
b= marray['listdir'][marray['nfirm']==j].tolist()
c=np.intersect1d(a,b)
if (len(c)>0 and (i!=j)):
larr[i,j]=c
else:
larr[i,j]='NaN'
del a, b, c
如果我理解正确
marray['listdir']
是表示导演的字符串列表,按电影索引。你知道吗marray['nfirm']
是代表公司的整数列表,也按电影索引。你知道吗您希望创建一个由成对公司共享的董事矩阵。你知道吗
为了提高效率,您可以先建立一个将公司与电影联系起来的字典,然后建立矩阵:
小改进:
a
重新计算j
次,但独立于j
:相关问题 更多 >
编程相关推荐