更改标量和numpy数组数据类型的较短方法

2024-05-23 18:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

这个函数可以写得更短吗?我在代码中经常这样做

def smartInt(x):
  if (type(x) == np.ndarray):
    return x.astype(int)
  else:
    return int(x)

Tags: 函数代码returnifdeftypenpelse
2条回答

这在行数方面并不短,但是try/except可能比显式类型检查更有效:

def smartInt(x):
    try:
        return int(x)
    except TypeError:
        return x.astype(int)

如果数组是更可能的输入:

def smartInt(x):
    try:
        return x.astype(int)
    except AttributeError:
        return int(x)

如果您可以使用numpy标量(例如np.int_而不是int),那么您可以这样做

np.asanyarray(x, int)[()]

甚至

np.int_(x)

相关问题 更多 >