【发布时间】:2016-10-25 16:45:11
【问题描述】:
我在 python 中使用 scipy 处理稀疏数组/矩阵。
我有一个稀疏数组[由其他两个之间的点积生成]。这个数组的大小应该不很大(可以是数百),但是这段代码会被多次调用。所以它一定很高效。
我需要一种有效的方法来创建一个 1 和 0 的字符串,如下所示:
nonzeros = np.nonzero(hashcode)
arr = ['0']*hashcode_length
if nonzeros != None:
for i in nonzeros[1]:
arr[i] = '1'
concatenated = ''.join(arr)
例如...如果稀疏数组的长度为 10 并且值为:
[0, 0, 1, 1, 0, 1, 0, 0, 0, 1]
输出应该是:
"0011010001"
如何改进这段代码?
注意:
- 抱歉没有放所有代码,因为它很大而且有太多 不相关的细节
- 如果问题不清楚或有更多详细信息,请告诉我 需要
【问题讨论】:
-
数组从何而来?你在用最后的字符串做什么?我问的原因是因为 python 程序的性能关键部分可以用 c/c++ 编写:在this page 的底部,它们显示了语言的比较。就个人经验而言,当我们将图形求解器从 python 重写为 c 时,我们经历了几个数量级的速度提高。 Python 花了大约 90 秒来解决一张图。在 C 语言中,由于巧妙地使用了位旋转,它在一秒钟内解决了我们所有的 1200 个图。
-
您希望
nonzeros何时成为None? -
数组无法计算和乘法 - 我正在使用 python 实现一些算法。您可以简单地假设给定数组并且它的值是 1 或 0(整数值)
标签: python arrays join scipy sparse-matrix