Ошибка типа: могут быть преобразованы только массивы размера 1 - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь преобразовать нижеследующее в целые числа

У меня есть переменная p, которая ниже

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

Я хочу преобразовать числа на основе порога

thres = 0.5

затем преобразовать

p1 = np.int(p > thres)

но я получаю ошибку ниже

TypeError: в скаляры Python могут быть преобразованы только массивы размера 1

Ответы [ 3 ]

1 голос
/ 25 апреля 2019

np.int это просто int, обычный встроенный тип Python. Я думаю, что это только в пространстве имен numpy для обратной совместимости. Это не тип NumPy, и вы не можете выполнить преобразование типов для массивов, вызвав его.

np.int_ - это тип NumPy для dtype. int значения преобразуются по умолчанию, и это тот тип, который используется, когда вы делаете что-то вроде 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])
1 голос
/ 25 апреля 2019

Вы хотите преобразовать тип массива .Соответственно, сделайте это вместо:

(p > thres).astype(np.int)
0 голосов
/ 25 апреля 2019
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
...