python - 如何通过元素的总和来限制 np 数组
问题描述
我需要以某种方式通过元素的总和来限制我的数组。所以,我想做类似的事情
l = [1, 3, 4, 5, 2, 7]
if sum(l) >= 10:
ans = [1, 3, 4, 0, 0, 0]
一般来说,我想生成一些火车,它们有 5 或 10 分钟的差异(p_i = 1/2)
a = np.random.choice([5, 10], (10**4, n))
- 像这样。
但是元素的总和必须 <= 600,我必须使用最大的 numpy 能力。
解决方案
您可以通过这种方式np.cumsum
与 with 一起使用:np.argmax
import numpy as np
MAX_SUM = 10
arr = np.array([[1, 3, 4, 5, 2, 7]])
arr[np.argmax(np.cumsum(arr) >= MAX_SUM):] = 0
print(arr)
# array([1, 3, 4, 0, 0, 0])
推荐阅读
- python - 为什么当我使用线程时我的 cv2.imshow() 停留在第一帧?
- c# - 我可以通过 .net 核心中的代码更新 appsettings.json 文件吗?
- r - cbind 不创建数据集,而是在 R 中创建字符向量
- html - 如何进行循环以从网页中的超链接中提取文本
- pointers - 如何编写这个函数,作为参数传递,返回一个指针?
- spring - 我正在尝试将父实体与其子实体一起保留,子记录中缺少父 ID
- java - 如何在 HiveMQ 中正确使用 TLS 1.3 密码套件?(获取 SSL 异常:在接收对等方的 close_notify 之前关闭入站)
- reactjs - 如何将自定义 html 创建的设计嵌入到谷歌地图中的标记我正在使用 react-google-maps packahe?
- python - 从一个字典列表中提取值到另一个
- javascript - 在这个函数中回调是如何执行的?