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

时间:2018-11-02 14:46:27

标签: python numpy

可以将此函数写得更短吗?我最终在代码中做了很多

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

2 个答案:

答案 0 :(得分:3)

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

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

甚至

np.int_(x)

答案 1 :(得分:1)

这在行数方面并不短,但是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)