`np.any` возвращает объект из массива объектов вместо логического? - PullRequest
0 голосов
/ 11 сентября 2018

Хорошо, пытаясь ответить на этот вопрос Я наткнулся на что-то очень странное.

matrix = np.zeros(10000)
matrix[np.random.choice(10000, 100)] = np.random.rand(100)
matrix = matrix.reshape(10, 1000)

from scipy.sparse import lil_matrix
l = lil_matrix(matrix.T)
l.rows

Out: array([[], [], [], ..., [], [], []], dtype=object)

Хорошо, поэтому я хочу знать, в каких строках есть данные, поэтому я попытался:

np.any(l.rows)

Out: [8]

.,, что?

out = np.any(l.rows)
type(out)

Out: list

Это список.С 8 в нем.Который кажется.,,случайным образом.Что происходит?

После игры кажется, что возвращается первый object в массиве, который не [].

np.random.seed(9)
matrix = np.zeros(10000)
matrix[np.random.choice(10000, 100)] = np.random.rand(100)
matrix = matrix.reshape(10, 1000)

from scipy.sparse import lil_matrix
l = lil_matrix(matrix.T)
l.rows

Out: array([[], [], [5], ..., [], [], []], dtype=object)

np.any(l.rows)
Out: [5]

Но, учитывая, что np.any должен тольковывод boolean или np.array логического значения, это очень странный результат.Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 11 сентября 2018

Я нашел это. Очевидно, он был в списке Easy Fix с 2014 года, но, наконец, кто-то работает над ним с прошлой недели.

Надо было подумать, что я не первая кукла, которая попробует что-то подобное.

Кроме того, правильное использование в этом случае будет:

l[l.rows.astype(bool)]
Out: 
<97x10 sparse matrix of type '<class 'numpy.float64'>'
    with 100 stored elements in LInked List format>
...