python numpy按条件设置列表元素

u3r8eeie  于 2023-01-01  发布在  Python
关注(0)|答案(2)|浏览(145)

我想将列表中一个特定元素设置为开销较低的特定值。例如,如果我有以下内容:a = numpy.array([1,2,3,0,4,0])我想把每一个0的值改为10;最后我想得到[1,2,3,10,4,10]
在Matlab中,你可以很容易地做到这一点,比如a(a==0)= 10,在numpy中有等价的吗?

lmyy7pcs

lmyy7pcs1#

与Matlab非常相似:

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

SciPy网站上有一个非常好的“NumPy for Matlab用户”指南。
我应该注意到,这对常规的Python列表不起作用,NumPy数组是一种不同的数据类型,在访问和数学运算符方面更像Matlab矩阵而不是Python列表。

2nbm6dog

2nbm6dog2#

我想,更像Python的方式应该是这样的:

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

更有Python的方式(@mtrw提供)

[10 if k == 0 else k for k in a]

相关问题