清除numpy数组的元素

Jey*_*Jey 4 python arrays numpy

有没有一种简单的方法来清除 numpy 数组的所有元素?我试过:

删除数组名

这将完全删除数组。我在迭代数千次的 for 循环中使用这个数组,所以我更喜欢保留数组但每次都用新元素填充它。

我尝试了 numpy.delete,但对于我的要求,我没有看到使用子数组规范。

*编辑*:

数组大小不会相同。

我在开始时在循环内分配空间,如下所示。如果这是错误的方法,请纠正我:

arrname = arange(x*6).reshape(x,6)
Run Code Online (Sandbox Code Playgroud)

我读取了一个数据集并为数据集中的每个元组构造了这个数组。我所知道的是列数将是相同的,但行数不是。例如,第一次我可能需要一个大小为 (3,6) 的数组,下一个元组为 (1,6),下一次为 (4,6) 等等。我填充数组的方式如下:

arrname[:,0] = lstname1
arrname[:,1] = lstname2
...
Run Code Online (Sandbox Code Playgroud)

换句话说,这些列是从由元组构造的列表中填充的。因此,在下一个循环开始之前,我想清除它的元素并使其为连续循环做好准备,因为我不希望上一个循环的残余混合当前内容。

Bi *_*ico 5

我不确定你说的 clear 是什么意思,数组中总会存储一些值,但你可以将这些值设置为某些值,例如:

>>> 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.]])
Run Code Online (Sandbox Code Playgroud)

更新

首先,你的问题很不清楚。你在写一个好问题上付出的努力越多,你就会得到更好的答案。一个好的问题应该让我们清楚你想要做什么以及为什么。示例数据也非常有用,只是数量很少,因此我们可以准确地看到您想要做什么。

话虽如此。似乎您应该为每次迭代创建一个新数组。创建数组非常快,并且不清楚为什么在需要更改大小和内容时要重用数组。如果您出于性能原因尝试重用它,您可能不会看到任何可测量的差异,调整数组大小并不比创建新数组快得多。您可以通过调用创建一个新数组numpy.zeros((X, 6))

同样在你的问题中,你说:

这些列是从由元组构造的列表中填充的

如果您的数据已经作为元组列表存放,您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
Run Code Online (Sandbox Code Playgroud)

希望有帮助。