TypeError:只能转换size-1数组

问题描述 投票:1回答:3

我试图将下面的转换为整数

我有一个变量p,如下所示

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

我想根据阈值转换数字

thres = 0.5

然后转换

p1 = np.int(p > thres)

但我得到以下错误

TypeError:只能将size-1数组转换为Python标量

python pandas numpy numpy-ndarray
3个回答
1
投票

您想要转换数组的类型。因此,请改为:

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

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])

-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
© www.soinside.com 2019 - 2024. All rights reserved.