gpt4 book ai didi

python numpy 列表操作

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:56 26 4
gpt4 key购买 nike

我有以下 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 方法来做到这一点?

最佳答案

Numpy arange函数可能在那里有用,我会按照以下方式进行:

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 是平面数组。

编辑:之后,我注意到我的解决方案生成 dtype float64np.array,即不同的输入 - 根据您的使用情况,这可能会或不会成为问题。对于出现问题的情况,我将代码修改为以下形式:

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

代码也更短,但我保留了原始代码,因为它可能更容易理解。

关于python numpy 列表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com