相关疑难解决方法(0)

增长numpy数值数组的最快方法

要求:

  • 我需要从数据中增加一个任意大的数组.
  • 我可以猜测大小(大约100-200),但不能保证阵列每次都适合
  • 一旦它生长到它的最终大小,我需要对它进行数值计算,所以我宁愿最终得到一个2-D numpy数组.
  • 速度至关重要.例如,对于300个文件中的一个,update()方法被称为4500万次(大约需要150s),而finalize()方法被称为500k次(总共106s)...总共250s或者.

这是我的代码:

def __init__(self):
    self.data = []

def update(self, row):
    self.data.append(row)

def finalize(self):
    dx = np.array(self.data)
Run Code Online (Sandbox Code Playgroud)

我试过的其他事情包括以下代码......但这是waaaaay慢.

def class A:
    def __init__(self):
        self.data = np.array([])

    def update(self, row):
        np.append(self.data, row)

    def finalize(self):
        dx = np.reshape(self.data, size=(self.data.shape[0]/5, 5))
Run Code Online (Sandbox Code Playgroud)

以下是如何调用此示意图的示意图:

for i in range(500000):
    ax = A()
    for j in range(200):
         ax.update([1,2,3,4,5])
    ax.finalize()
    # some processing on ax
Run Code Online (Sandbox Code Playgroud)

python performance numpy

65
推荐指数
5
解决办法
6万
查看次数

使用python和numpy中的大数据,没有足够的ram,如何在光盘上保存部分结果?

我正在尝试在python中实现具有200k +数据点的1000维数据的算法.我想使用numpy,scipy,sklearn,networkx和其他有用的库.我想执行所有点之间的成对距离等操作,并在所有点上进行聚类.我已经实现了以合理的复杂度执行我想要的工作算法但是当我尝试将它们扩展到我的所有数据时,我用完了ram.我当然这样做,在200k +数据上创建成对距离的矩阵需要很多内存.

接下来是:我真的很想在具有少量内存的糟糕计算机上执行此操作.

有没有可行的方法让我在没有低ram限制的情况下完成这项工作.它需要更长的时间才真正不是问题,只要时间要求不会无限!

我希望能够让我的算法工作,然后在一小时或五个小时后回来,而不是因为它用完了公羊而被卡住了!我想在python中实现它,并能够使用numpy,scipy,sklearn和networkx库.我希望能够计算到我所有点的成对距离等

这可行吗?我将如何解决这个问题,我可以开始阅读哪些内容?

最好的问候//梅斯默

python arrays numpy scipy bigdata

48
推荐指数
1
解决办法
2万
查看次数

Python中列表的大小调整因素是什么

例如,ArrayListJava中的s的大小调整系数为2。当ArrayList包裹的数组空间不足时,该数组的所有元素都将转移到新数组,该数组的大小是原始数组的2倍。

由于Python列表/数组自然是动态的,因此它们的大小调整因素是什么?还是他们使用其他缩放方法?如果是这样,那是什么方法?它的渐近运行时是什么(大O)?

python list asymptotic-complexity data-structures python-3.x

6
推荐指数
1
解决办法
855
查看次数

附加numpy数组的有效方法

我会保持简单.我有一个循环,将新行附加到numpy数组...这是有效的方法.

n=np.zeros([1,2])
for x in [[2,3],[4,5],[7,6]]
      n=np.append(n,x,axis=1)
Run Code Online (Sandbox Code Playgroud)

现在问题是[0,0]坚持它所以我必须删除它

   del n[0]
Run Code Online (Sandbox Code Playgroud)

这似乎是愚蠢的...所以请告诉我一个有效的方法来做到这一点.

   n=np.empty([1,2])
Run Code Online (Sandbox Code Playgroud)

更糟糕的是它创造了一个未初始化的价值.

python arrays numpy

4
推荐指数
2
解决办法
1万
查看次数