当前位置: 首页 > 面试题库 >

使用Python和NumPy的超大型矩阵

孙池暝
2023-03-14
问题内容

NumPy是一个非常有用的库,通过使用它,我发现它能够轻松处理非常大的矩阵(10000 x 10000),但是开始处理任何更大的矩阵(尝试创建50000 x 50000的矩阵)失败)。显然,这是因为需要大量内存。

是否有一种方法可以以某种方式(没有几个terrabytes的RAM)在NumPy中本地创建大型矩阵(比如说一百万乘一百万)?


问题答案:

PyTables和NumPy是必经之路。

PyTables将以HDF格式(可选压缩)将数据存储在磁盘上。我的数据集经常得到10倍压缩,这在处理数千万或几亿行时非常方便。它也非常快。我5岁的笔记本电脑可以像SQL一样执行GROUP BY聚合,处理数据的速度为1,000,000行/秒。对于基于Python的解决方案来说还不错!

再次作为NumPy重新数组访问数据非常简单:

data = table[row_from:row_to]

HDF库负责读取相关的数据块并将其转换为NumPy。



 类似资料:
  • 我有一个线性方程组,如MX=N。M是一个21x21矩阵,其中许多元素为零。当我试图用X=np求解这个系统时。linalg。求解(M,N),它会产生以下错误: 这里的问题是返回的值是0.0。我尝试了两种不同的方法来生成矩阵,这时我遇到了一个奇怪的行为: i) M的非零元素在代码中的其他地方计算。所有这些元素都是浮点数,表示为m_1,m_2,m_21。首先,为了生成M,我尝试了以下代码: 该矩阵的行列

  • 问题内容: 有时,您必须对一个或多个大型Numpy阵列执行许多中间操作。这会很快导致s。在我到目前为止的研究中,U发现酸洗(Pickle,CPickle,Pytables等)是缓解此问题的方法。我想知道经验丰富的程序员在处理大量数据时是否还会使用其他任何技术(当然,除了消除策略/代码中的冗余之外)。 另外,如果我确定有一件事,那就是没有免费的东西。使用其中一些技术,需要进行哪些权衡(例如,速度,鲁

  • 本文向大家介绍Python中的Numpy矩阵操作,包括了Python中的Numpy矩阵操作的使用技巧和注意事项,需要的朋友参考一下 Numpy 通过观察Python的自有数据类型,我们可以发现Python原生并不提供多维数组的操作,那么为了处理矩阵,就需要使用第三方提供的相关的包。 NumPy 是一个非常优秀的提供矩阵操作的包。NumPy的主要目标,就是提供多维数组,从而实现矩阵操作。 NumPy

  • 问题内容: 在NumPy中,我可以通过以下方式获取特定数据类型的大小(以字节为单位): 要么: 例如: 我有两个问题。首先,有没有一种方法可以在 不创建 数据类型 实例的情况 下获取此信息?其次,和之间有什么区别? 问题答案: 您需要一个的实例来获取itemsize,但不需要一个的实例。(很快就会知道,它是数组的属性,而不是dtype。) 例如 至于之间的区别和,只是。 例如

  • 本文向大家介绍在Python中使用Numpy将两个矩阵相乘,包括了在Python中使用Numpy将两个矩阵相乘的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习如何使用Python中的NumPy库将两个矩阵相乘。使用NumPy库很简单。 它有一个称为点的矩阵乘法方法。您可以使用以下命令安装NumPy库。 让我们看看程序中涉及的步骤。 导入NumPy库。 初始化矩阵。 将矩阵与nump

  • 问题内容: 使用SciPy / Numpy在Python中连接稀疏矩阵的最有效方法是什么? 在这里,我使用以下内容: 我想在回归中使用两个预测变量,但是当前格式显然不是我想要的格式。是否有可能获得以下信息: 它太大,无法转换为深格式。 问题答案: 您可以使用来连接行数相同的稀疏矩阵(水平串联): 同样,您可以用于将具有相同列数的稀疏矩阵进行串联(垂直串联)。 使用或将创建带有两个稀疏矩阵对象的数组