首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:如果小于,如何用另一个数组的值替换数组中的值?

Python:如果小于,如何用另一个数组的值替换数组中的值?
EN

Stack Overflow用户
提问于 2019-10-24 15:02:40
回答 3查看 887关注 0票数 0

我试图比较两个列表,并将第一个列表的值替换为第二个列表的值,前提是它们较小。

我尝试了python中的小于函数,但这似乎取代了整个列表。

代码语言:javascript
运行
复制
A = [7 , 10 , 2, 5 , 9]
B = [8 , 12 , 1, 4 , 7]

A[A < B] = B

这将列表A替换为列表B,可能是因为它比较了整个列表。我只希望替换比B中的值小的值,结果是:

8、12、2、5、9

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-24 15:06:02

做:

代码语言:javascript
运行
复制
import numpy as np

A = np.array([7, 10, 2, 5, 9])
B = np.array([8, 12, 1, 4, 7])

A[A < B] = B[A < B]
print(A)

输出

代码语言:javascript
运行
复制
[ 8 12  2  5  9]
票数 4
EN

Stack Overflow用户

发布于 2019-10-24 15:12:32

使用numpy.place -根据条件更改数组的元素:

代码语言:javascript
运行
复制
import numpy as np

a = np.array([7 , 10 , 2, 5 , 9])
b = np.array([8 , 12 , 1, 4 , 7])
np.place(a, a < b, b)
print(a)    # [ 8 12  2  5  9]
票数 2
EN

Stack Overflow用户

发布于 2019-10-24 15:24:41

如果您想把它保存在vanilla python中,您可以这样做:

代码语言:javascript
运行
复制
A[:] = [max(a, b) for a, b in zip(A, B)]

这是一个真正的就地操作,这样id(A)就不会改变.更简单的方法可能是重新分配A

代码语言:javascript
运行
复制
A = [max(a, b) for a, b in zip(A, B)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58544129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档