有没有一种简单的方法可以清除 numpy 数组的所有元素?我试过:
删除数组名
这将完全删除数组。我在迭代数千次的 for 循环中使用这个数组,所以我更喜欢保留这个数组,但每次都用新元素填充它。
我试过 numpy.delete,但根据我的要求,我没有看到子数组规范的使用。
*已编辑*:
数组大小不会相同。
我在开始的循环内分配空间,如下所示。如果这是错误的方法,请纠正我:
arrname = arange(x*6).reshape(x,6)
我读取了一个数据集并为数据集中的每个元组构建了这个数组。我所知道的是列数将相同但行数不同。例如,第一次我可能需要一个大小为 (3,6) 的数组,下一个元组为 (1,6),下一次为 (4,6) 等等。我填充数组的方式如下:
arrname[:,0] = lstname1
arrname[:,1] = lstname2
...
换句话说,列是由元组构造的列表填充的。因此,在下一个循环开始之前,我想清除它的元素并使其为连续循环做好准备,因为我不希望前一个循环的残余物混合当前内容。
最佳答案
我不确定你所说的清晰是什么意思,数组中总会存储一些值,但你可以将这些值设置为某些值,例如:
>>> A = numpy.array([[1, 2], [3, 4], [5, 6]], dtype=numpy.float)
>>> A
array([[ 1., 2.],
[ 3., 4.],
[ 5., 6.]])
>>> A.fill(0)
>>> A
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
>>> A[:] = 1.
>>> A
array([[ 1., 1.],
[ 1., 1.],
[ 1., 1.]])
更新
首先,你的问题很不明确。你越努力写一个好问题,你就会得到更好的答案。一个好的问题应该让我们清楚地知道你想做什么以及为什么。示例数据也非常有用,只是数量很少,所以我们可以准确地看到您正在尝试做什么。
话虽这么说。似乎您应该为每次迭代创建一个新数组。创建数组非常快,并且不清楚为什么在大小和内容需要更改时要重用数组。如果您出于性能原因尝试重用它,您可能不会看到任何可测量的差异,调整数组大小并不比创建新数组快得多。您可以通过调用 numpy.zeros((X, 6))
同样在你的问题中你说:
the columns are filled from lists constructed from the tuples
如果您的数据已经存储为元组列表,您可以使用 numpy.array
将其转换为数组。您无需费心创建数组并填充它。例如,如果我想从元组列表中获取 (2, 3) 数组,我会这样做:
data = [(0, 0, 1), (0, 0, 2)]
A = numpy.array(data)
# or if the data is stored like this
data = [(0, 0), (0, 0), (1, 2)]
A = numpy.array(data).T
希望对您有所帮助。
关于python - 清除 numpy 数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514394/