python - 清除 numpy 数组的元素

标签 python arrays numpy

有没有一种简单的方法可以清除 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/

相关文章:

python - 如何使用 Pandas 将 Series 连接到 DataFrame 上?

python - Pandas : select columns that ends with another column

javascript - 我怎么知道一个数组在 Javascript 中包含全零(0)

C程序不会按升序排列数字

python - 阻止 Python enumerate() 将字符串拆分为字符

python - pygame保存音频文件

python - 仅获取日期和时间字符串之外的时间数据。

javascript - 使两个数组具有相同值的最小数字更改次数

python - 更改 plot_surface 中的线条颜色

python - Numpy 构建失败,无法导入多数组