TypeError:只能转换大小为1的数组

时间:2019-04-25 06:34:53

标签: python pandas numpy numpy-ndarray

我正在尝试将以下内容转换为整数

我有一个下面的变量p

array([0.09641092, 0.02070604, 0.21679783, ..., 0.06453979, 0.02907993, 0.12129478])

我想根据阈值转换数字

thres = 0.5

然后转换

p1 = np.int(p > thres)

但是我得到以下错误

TypeError:只有大小为1的数组可以转换为Python标量

3 个答案:

答案 0 :(得分:1)

您要转换 array 的类型。因此,请改为:

(p > thres).astype(np.int)

答案 1 :(得分:1)

np.int只是int,是普通的Python内置类型。我认为它甚至仅在numpy名称空间中具有向后兼容性。它不是NumPy类型,您不能通过调用它来对数组执行类型转换。

np.int_是dtype int值的NumPy类型,默认情况下会转换为它,它是您执行some_array.astype(int)之类的操作时使用的值。它对应于C longnp.int_,您可以调用以对整个数组进行类型转换:

>>> x = numpy.array([True, False, True])
>>> numpy.int_(x)
array([1, 0, 1])

但更常见的是使用astype

>>> x.astype(int)
array([1, 0, 1])

答案 2 :(得分:-1)

import numpy as np
a = np.array([0.09641092, 0.02070604, 0.21679783, 0.06453979, 0.02907993, 0.12129478])
t = 0.05
for i in range(len(a)):
if(a[i]>t):
    print(a[i])

输出:

0.09641092
0.21679783
0.06453979
0.12129478

print(np.int(a[i]))

输出:

0
0
0
0