python-3.x 如何从增量浮点值列表中提取整数的第一次出现?

w8ntj3qf  于 2023-08-08  发布在  Python
关注(0)|答案(2)|浏览(112)

循环遍历列表并找到第一次出现的整数并将这些元素保存在新列表中的最有效方法是什么?在这个例子中,我存储了前3个数字,它们应该是1.4,2.1和3。

import math

list = [.3, .8, 1.4, 1.9, 2.1, 2.7, 3, 3.2, 3.8]

new_list = [0, 0, 0]

for i in list:
    if math.floor(i) == 1:
        print("one:", i)
        if new_list[0] == 0:
            new_list[0] = i

    if i >= 2 and i < 3:
        print("two:", i)
        if new_list[1] == 0:
            new_list[1] = i

    if i >= 3:
        print("three:", i)
        new_list[2] = i
        break

print("\n", new_list)

字符串

9o685dep

9o685dep1#

使用numpy:

import numpy as np

arr = np.asarray([.3, .8, 1.4, 1.9, 2.1, 2.7, 3, 3.2, 3.8])

(a := arr[arr>=1])[np.unique(a.astype(int),return_index=True)[1]]
array([1.4, 2.1, 3. ])

字符串

7nbnzgx9

7nbnzgx92#

不确定它是最有效的,但使用numpy的列表理解效果很好:

import numpy as np

arr = np.asarray([.3, .8, 1.4, 1.9, 2.1, 2.7, 3, 3.2, 3.8])
print([arr[np.where((arr - x) >= 0)][0] for x in np.unique(np.floor(arr[arr >= 1]))])

字符串
输出[1.4、2.1、3.0]
基本上,我会创建一个数组的唯一权值列表,当大于1时:
np.unique(np.floor(arr[arr >= 1]))
然后循环通过它,选择输入数组的第一个元素,其中与flooded值的差值最接近0。

相关问题