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