1

我想以低开销将列表中的特定元素设置为特定值。例如,如果我有这个:a = numpy.array([1,2,3,0,4,0])我想将每个 0 值更改为 10;最后我想要 [1, 2, 3, 10, 4, 10]

在 Matlab 中,您可以像 a(a==0) = 10 一样轻松地做到这一点,在 numpy 中是否有任何等价物?

4

2 回答 2

6

与 Matlab 非常相似:

>>> a[a == 0] = 10
>>> a
array([ 1,  2,  3, 10,  4, 10])

SciPy 网站上有一个非常好的“Matlab 用户 NumPy”指南。

我应该注意,这不适用于常规的 Python 列表。NumPy 数组是一种不同的数据类型,在访问和数学运算符方面,它更像 Matlab 矩阵而不是 Python 列表。

于 2013-08-12T21:28:19.037 回答
1

我猜想,更 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]
于 2013-08-12T21:32:39.427 回答