我想以低开销将列表中的特定元素设置为特定值。例如,如果我有这个:a = numpy.array([1,2,3,0,4,0])
我想将每个 0 值更改为 10;最后我想要 [1, 2, 3, 10, 4, 10]
在 Matlab 中,您可以像 a(a==0) = 10 一样轻松地做到这一点,在 numpy 中是否有任何等价物?
与 Matlab 非常相似:
>>> a[a == 0] = 10
>>> a
array([ 1, 2, 3, 10, 4, 10])
SciPy 网站上有一个非常好的“Matlab 用户 NumPy”指南。
我应该注意,这不适用于常规的 Python 列表。NumPy 数组是一种不同的数据类型,在访问和数学运算符方面,它更像 Matlab 矩阵而不是 Python 列表。
我猜想,更 Pythonic 的方式是这样的:
import numpy
a = numpy.array([1,2,3,0,4,0])
for k,v in enumerate(a):
if v == 0:
a[k] = 10
print a
更 Pythonic 的方式(由@mtrw 提供)
[10 if k == 0 else k for k in a]