要求:
这是我的代码:
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中实现具有200k +数据点的1000维数据的算法.我想使用numpy,scipy,sklearn,networkx和其他有用的库.我想执行所有点之间的成对距离等操作,并在所有点上进行聚类.我已经实现了以合理的复杂度执行我想要的工作算法但是当我尝试将它们扩展到我的所有数据时,我用完了ram.我当然这样做,在200k +数据上创建成对距离的矩阵需要很多内存.
接下来是:我真的很想在具有少量内存的糟糕计算机上执行此操作.
有没有可行的方法让我在没有低ram限制的情况下完成这项工作.它需要更长的时间才真正不是问题,只要时间要求不会无限!
我希望能够让我的算法工作,然后在一小时或五个小时后回来,而不是因为它用完了公羊而被卡住了!我想在python中实现它,并能够使用numpy,scipy,sklearn和networkx库.我希望能够计算到我所有点的成对距离等
这可行吗?我将如何解决这个问题,我可以开始阅读哪些内容?
最好的问候//梅斯默
例如,ArrayListJava中的s的大小调整系数为2。当ArrayList包裹的数组空间不足时,该数组的所有元素都将转移到新数组,该数组的大小是原始数组的2倍。
由于Python列表/数组自然是动态的,因此它们的大小调整因素是什么?还是他们使用其他缩放方法?如果是这样,那是什么方法?它的渐近运行时是什么(大O)?
python list asymptotic-complexity data-structures python-3.x
我会保持简单.我有一个循环,将新行附加到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)
更糟糕的是它创造了一个未初始化的价值.