我正在尝试将以下内容转换为整数
我有一个下面的变量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标量
答案 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 long
。 np.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