基本上,在

python中存储和使用密集矩阵的最佳方法是什么?

我有一个项目,可以在数组中的每个项目之间生成相似度量.

每个项目都是一个自定义类,并存储一个指向另一个类的指针和一个表示它与该类“紧密”的数字.

现在,它的工作效果非常好,约为8000件,之后失败并出现内存错误.

基本上,如果你假设每个比较使用〜30(看起来准确基于测试)字节来存储相似性,那意味着所需的总内存是:

numItems ^ 2 * itemSize =记忆

因此,内存使用量是基于项目数量的指数.

就我而言,每个链接的内存大小约为30个字节,因此:

8000 * 8000 * 30 = 1,920,000,000字节,或1.9 GB

这是在单个线程的内存限制.

在我看来,必须有一种更有效的方法来做到这一点.我已经看过了memmapping,但是为了生成相似度值已经计算密集了,并且通过硬盘驱动器将其瓶颈似乎有点荒谬.

编辑

我看着numpy和scipy.不幸的是,它们也不支持非常大的阵列.

>>> np.zeros((20000,20000), dtype=np.uint16)

Traceback (most recent call last):

File "", line 1, in

MemoryError

>>>

进一步编辑

Numpy似乎很受欢迎.然而,numpy不会真正做我想要的,至少没有另一个抽象层.

我不想存储数字,我想存储类的引用. Numpy支持对象,但这并不能解决数组大小问题.我提出了numpy作为一个不起作用的例子.

有什么建议?

编辑嗯,我结束了只是重写所有逻辑,因此它不再存储任何冗余值,从而将内存使用从O * n ^ 2减少到O *((n *(n-1))/ 2).

基本上,整个事件是handshake problem的一个版本,所以我已经从存储所有链接切换到每个链接的单个版本.

这不是一个完整的解决方案,但我通常没有足够大的数据集来溢出它,所以我认为它会成功. PyTables真的很有趣,但我不知道任何SQL,并且似乎没有任何好的传统切片或基于索引的方式来访问表数据.我将来可能会重新审视这个问题.

python处理大型矩阵_在python中处理大型密集矩阵相关推荐

  1. python 空矩阵_在NumPy中创建空数组/矩阵的方法

    如何在NumPy中创建空数组/矩阵? 在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 row-by-row: >>> import numpy & ...

  2. python申请超大矩阵_在python中处理大型密集矩阵

    基本上,在python中存储和使用密集矩阵的最佳方法是什么? 我有一个在数组中的每个项之间生成相似性度量的项目. 每个项都是一个自定义类,并存储一个指向另一个类的指针和一个表示它与该类"接近 ...

  3. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

  4. python创建矩阵_在Python中创建矩阵的Python程序

    python创建矩阵 There is no specific data type in Python to create a matrix, we can use list of list to c ...

  5. python矩阵乘法菜鸟_Python中的几种矩阵乘法(转)

    一.  np.dot() 1.同线性代数中矩阵乘法的定义.np.dot(A, B)表示: 对二维矩阵,计算真正意义上的矩阵乘积. 对于一维矩阵,计算两者的内积. 2.代码 [code] import ...

  6. python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)

    下面就为大家分享一篇使用Python将数组的元素导出到变量中(unpacking),具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 最近工作中遇到一个问题,需要利用Python将数组(list ...

  7. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  8. python数组的乘法_在Python中乘法非常大的2D数组

    我必须在Python中将非常大的2D数组乘以大约100次.每个矩阵由32000×32000元素组成. 我正在使用np.dot(X,Y),但是每次乘法都需要很长时间-在我的代码实例下面: import ...

  9. python如何定义矩阵_基础 | Python下的矩阵定义 (下)

    关键词:线性代数 / 矩阵 / 基本定义 矩阵对于算法就如同人对于食物般的关系,已经到了密不可分的状态了,在神经网络里,矩阵代表了每层神经元之间的链接,在集成算法里,矩阵记录了每次分类器更新的残差,在 ...

最新文章

  1. Using NUnit with Visual Studio 2005 Express Editions
  2. 单行文字不断向上滚动特效
  3. Vue.js-Day01-AM【第一次学习-安装、基础使用(引入方式)、数据展示、指令介绍(v-html、v-text、v-bind、v-if、v-for】
  4. git永久保存账号密码
  5. c#之using关键字
  6. 挑选出tensor中等于0的索引_Pytorch中的5个非常有用的张量操作
  7. 【github系列】github代码仓创建及更新
  8. 后台弹出界面权限 绕过_教您如何发微信「朋友圈」,设置访问权限
  9. 【影像学基本知识】Slice gap and slice thickness and cross-talk
  10. JAVA——JVM参数设置规则以及参数含义
  11. 微信小程序配置接口调用API
  12. 多元统计分析——多元线性回归
  13. 计算机屏幕刷新频率,屏幕刷新率多少合适,教您电脑屏幕刷新率多少合适
  14. 2011的总结(感谢自己,感恩他人)【转自我的新浪博客】
  15. Unity之Failed to import package with error: Couldn‘t decompress package
  16. 基于 NCC/灰度信息 的模板匹配算法(QT + Opencv + C++),10ms内获取匹配结果,部分源码
  17. 优质免费在线学习网站
  18. 卡特尔16PF性格测试与答案
  19. 阿里 Arthas 读书笔记
  20. 2016年春运火车票预售期购票日历 (zz)

热门文章

  1. linux ldconfig 与 /etc/ld.so.conf 动态函数库配置
  2. See system logs and 'systemctl status xxx.service' for details.错误的解决方法
  3. Web应用里的HTTP参数污染(HPP漏洞)
  4. #include Windows.h 和 Winsock2.h冲突的改进解决方案
  5. 提高你开发效率的十五个Visual Studio 2010使用技巧
  6. VC6.0生成文件的种类和作用
  7. java设计模式---合成模式2
  8. PHP Mysql 网站迁移,Linux+PHP+MySql网站迁移配置
  9. Problem 60 关于解决X11的错误的问题?
  10. php7.3 安装详解,php7.3.20以及常用拓展安装