我有一个从第三方库获得的m
-by-n
NumPy数组列表,例如
import numpy
x0 = numpy.random.rand(1000, 1000) # x_i likewise
a = [[x0], [x1, x2], [x3, x4, x5]] # and more
我现在需要把这个结构弄平,例如
b = numpy.concatenate(a)
# b = [x0, x1, x2, x3, x4, x5]
但是数组x
太大了,a
和b
不能同时放入内存,因此Python在concatenate
被杀死。你知道吗
我可以在释放a
元素的同时将a
展平成一个连续的numpy数组吗?你知道吗
那么
a
是一个数组列表,其中所有数组的形状都相同?你知道吗concatenate
获取数组列表,并在所需的轴上联接它们。它是经过编译的,所以很难说它对列表列表做了什么。这个测试显示它的行为就像列表是平面列表一样。但我不能说它是平展列表还是嵌套串联。你知道吗嵌套列表可以用itertools展平
作为一个列表操作,它不应该影响内存使用太多,因为它只是在玩指针,而不是创建新的数组。你知道吗
可以连接块(子列表)并从列表中删除元素。但要使其有效,我们必须确保对单个数组的所有引用都已删除,否则它们将不会被垃圾收集。你知道吗
但我不打算尝试那些可能给我带来内存满错误的数组。你知道吗
相关问题 更多 >
编程相关推荐