python - python numpy 列表操作
问题描述
我有以下 numpy 数组:
import numpy as np
a = np.array([2,15,66,180])
现在,我希望连续元素之间的差异(diff)除以 25,始终小于或等于 1(diff/25 < 0)。
out = some_function(a,25)
out
[2,15,40,65,66,91,116,141,166,180]
有没有智能的pythonic方式来做到这一点?
解决方案
Numpyarange
函数可能在那里有用,我会按照以下方式进行:
import numpy as np
a = np.array([2,15,66,180])
out = np.array([])
for i in range(len(a)-1):
out = np.hstack((out,np.arange(a[i],a[i+1],25)))
out = np.hstack((out,a[-1:]))
print(out)
输出:
[ 2. 15. 40. 65. 66. 91. 116. 141. 166. 180.]
此解决方案假定 a 是平面数组。
编辑:虽然我注意到我的解决方案产生np.array
了dtype float64
,即不同的输入 - 根据您的使用情况,它可能是也可能不是问题。对于出现问题的情况,我将代码修改为以下形式:
import numpy as np
a = np.array([2,15,66,180])
print(a.dtype) #int64
out = np.hstack([np.arange(a[i],a[i+1],25) for i in range(len(a)-1)]+[a[-1:]])
print(out) #[ 2 15 40 65 66 91 116 141 166 180]
print(out.dtype) #int64
代码也更短,但我保留了原始代码,因为它可能更容易理解。
推荐阅读
- c# - 如何从 MySql 的表中获取 C# 中即将到来的约会?
- windows - 使用 ADO ODBC 上传到服务器时,在 VB.NET WEB APPLICATION 中打开与 MS Access DB 的连接时出错
- angular - 仅删除 mat-select 组件的 Scroll Webkit css 类
- go - cmd找不到文件
- css - jekyll 中的 CSS 覆盖
- typescript - 在 nestjs 中导入并注入 typeorm 存储库
- c - 在 C 中检测矩阵中的岛
- telegram - 有没有办法在电报中找到具有频道 ID 的私人频道
- reactjs - MUIDataTable 不使用 customBodyRender 对列进行排序
- mule - 骡 SQL Server 2012 到 SSAS