python处理大型矩阵_在python中处理大型密集矩阵
基本上,在
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中处理大型密集矩阵相关推荐
- python 空矩阵_在NumPy中创建空数组/矩阵的方法
如何在NumPy中创建空数组/矩阵? 在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 row-by-row: >>> import numpy & ...
- python申请超大矩阵_在python中处理大型密集矩阵
基本上,在python中存储和使用密集矩阵的最佳方法是什么? 我有一个在数组中的每个项之间生成相似性度量的项目. 每个项都是一个自定义类,并存储一个指向另一个类的指针和一个表示它与该类"接近 ...
- python数组相减_对Python 中矩阵或者数组相减的法则详解
对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...
- python创建矩阵_在Python中创建矩阵的Python程序
python创建矩阵 There is no specific data type in Python to create a matrix, we can use list of list to c ...
- python矩阵乘法菜鸟_Python中的几种矩阵乘法(转)
一. np.dot() 1.同线性代数中矩阵乘法的定义.np.dot(A, B)表示: 对二维矩阵,计算真正意义上的矩阵乘积. 对于一维矩阵,计算两者的内积. 2.代码 [code] import ...
- python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)
下面就为大家分享一篇使用Python将数组的元素导出到变量中(unpacking),具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 最近工作中遇到一个问题,需要利用Python将数组(list ...
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
<Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: <Python之禅>中对于Pyt ...
- python数组的乘法_在Python中乘法非常大的2D数组
我必须在Python中将非常大的2D数组乘以大约100次.每个矩阵由32000×32000元素组成. 我正在使用np.dot(X,Y),但是每次乘法都需要很长时间-在我的代码实例下面: import ...
- python如何定义矩阵_基础 | Python下的矩阵定义 (下)
关键词:线性代数 / 矩阵 / 基本定义 矩阵对于算法就如同人对于食物般的关系,已经到了密不可分的状态了,在神经网络里,矩阵代表了每层神经元之间的链接,在集成算法里,矩阵记录了每次分类器更新的残差,在 ...
最新文章
- Using NUnit with Visual Studio 2005 Express Editions
- 单行文字不断向上滚动特效
- Vue.js-Day01-AM【第一次学习-安装、基础使用(引入方式)、数据展示、指令介绍(v-html、v-text、v-bind、v-if、v-for】
- git永久保存账号密码
- c#之using关键字
- 挑选出tensor中等于0的索引_Pytorch中的5个非常有用的张量操作
- 【github系列】github代码仓创建及更新
- 后台弹出界面权限 绕过_教您如何发微信「朋友圈」,设置访问权限
- 【影像学基本知识】Slice gap and slice thickness and cross-talk
- JAVA——JVM参数设置规则以及参数含义
- 微信小程序配置接口调用API
- 多元统计分析——多元线性回归
- 计算机屏幕刷新频率,屏幕刷新率多少合适,教您电脑屏幕刷新率多少合适
- 2011的总结(感谢自己,感恩他人)【转自我的新浪博客】
- Unity之Failed to import package with error: Couldn‘t decompress package
- 基于 NCC/灰度信息 的模板匹配算法(QT + Opencv + C++),10ms内获取匹配结果,部分源码
- 优质免费在线学习网站
- 卡特尔16PF性格测试与答案
- 阿里 Arthas 读书笔记
- 2016年春运火车票预售期购票日历 (zz)
热门文章
- linux ldconfig 与 /etc/ld.so.conf 动态函数库配置
- See system logs and 'systemctl status xxx.service' for details.错误的解决方法
- Web应用里的HTTP参数污染(HPP漏洞)
- #include Windows.h 和 Winsock2.h冲突的改进解决方案
- 提高你开发效率的十五个Visual Studio 2010使用技巧
- VC6.0生成文件的种类和作用
- java设计模式---合成模式2
- PHP Mysql 网站迁移,Linux+PHP+MySql网站迁移配置
- Problem 60 关于解决X11的错误的问题?
- php7.3 安装详解,php7.3.20以及常用拓展安装