Как найти первые N разных строк в матрице numpy - PullRequest
0 голосов
/ 12 апреля 2020

Привет всем, у меня есть это, и я хочу оптимизировать это. Моя проблема состоит в том, чтобы взять первые N разных строк в матрице.

            while i<self.K: #self.K is the number of rows that i have to take
            find=False #
            for line in self.centroids: #centroids is the matrix where i will save the different numbers
                c=np.equal(line,self.X[j]) #X is a matrix with all element size (4800,3)
                if np.all(c)==True:
                    find=True  
            if find==False:
                self.centroids[i]=self.X[j]

                i=i+1

            j=j+1

Спасибо за помощь ypur. Я sh я все очень хорошо объяснил.

1 Ответ

0 голосов
/ 12 апреля 2020

Мой друг.

Ваша помощь здесь.

import numpy as np
import pandas as pd

#  CREATES A TEST ARRAY, WITH SOME RANDOM DATA.
numbers = np.random.rand(20, 1)

#  CREATES A DATAFRAME WITH RANDOM DATA.
df = pd.DataFrame(numbers, columns=['number']) 

#  THIS IS A MAP FUNCTION TO HELP WITH INTEGER VALUES.
def do_integer(param):
    return round(abs(10 * param))

#  HERE I CREATE A COLUMN WITH INTEGER DATA. 
df['integer_number'] = df['number'].map(do_integer)

#  HERE THE CODE YOU NEED. 
n = 4
uniques = []
for item in df.iterrows():
    if item[1]['integer_number'] not in uniques:
        uniques.append(item[1]['integer_number'])
        n = n - 1
        if n == 0:
            break


Или вы можете использовать метод unique (). Намного лучше ...

#  HERE I GET THE TOP 4 UNIQUE ELEMENTS.
n = 4
unique_values = (df['integer_number'].unique())[0:n]

Пока.

...