清空一个已存在的 NumPy 数组

5

现在我有一个带有特定列名、格式和长度的numpy数组X。如何将该数组中所有值设置为0(或空),而不删除格式/名称等内容?

3个回答

7
使用 numpy.ndarray.fill 方法:
>>> import numpy as np
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a.fill(0)
>>> a
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

1
Np.Zeroslike是什么? - agconti
1
那将创建一个全新的数组。 - Nick T
@NickT,请添加@agconti以通知他/她。 - falsetru
@NickT 你可以使用 myArray = np.zeros_like(myArray),我认为它的作用是一样的。 - heltonbiker
2
@heltonbiker 你仍然在创建一个全新的数组,然后释放旧的以便进行垃圾回收。这将使用两倍的内存,并且可能需要更长时间。 - Nick T

4
您可以使用切片操作:
>>> a = np.array([[1,2],[3,4]])
>>> a[:] = 0
>>> a
array([[0, 0],
       [0, 0]])

3
使用numpy.zeroes_like创建一个新的数组,填充为零,但保留来自现有数组的类型信息。
zeroed_X = numpy.zeroes_like(X)

如果您想的话,您可以将结构化数组中的类型信息保存下来以备将来使用。这些信息都在dtype中:

my_dtype = X.dtype

或许有用,但如果有人想要简单地“清空”数组,最好使用.fill()方法填充它——这样不会使内存使用量翻倍。 - Nick T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接