将一个笨拙的数组值的类型从 float 更改为 int

Changing an awkward array's values' type from float to int

我有一个笨拙的 float 类型数组,我需要它是 int 类型。等同于以下 numpy 片段的内容:

import numpy as np
import awkward as ak

arr = np.array([1., 2., 3.])
arr = arr.astype(int)

arr2 = ak.Array(np.array([1., 2., 3.]))
arr2 = arr2.???

如果你有一个笨拙的数组,arr,其中:

>>> arr.type
20 * float64

您可以简单地使用 ak.values_astype:

>>> arr = ak.values_astype(arr, "int64")
>>> arr
20 * int64

这是将数组中的所有值从 float 更改为 int:

的方法
# Example array
arr_float = [3.45, 5.6, 3.89, 10.1]

# to integer values 
arr_int = [int(n) for n in arr_float] # this is a list comprehension
arr_int
>>> [3, 5, 3, 10] # float values to integer get always rounded down to whole number

或者,您可以将数组设为 numpy 数组,然后按照您的问题进行操作:

import numpy as np

# Example array
arr_float = [3.45, 5.6, 3.89, 10.1]

# to numpy array
arr_np = np.array(arr_float)

arr_np.astype(int)
>>> array([ 3,  5,  3, 10])

这将是一个在您需要更改时可调用的函数:

# Function changing float values to integer values
def to_int(input_array):
    return [int(n) for n in input_array]

# Example array
arr_float = [3.86, 2.9999, 9.46, 3.00013, 8.56]

to_int(arr_float)
>>> [3, 2, 9, 3, 8]