x[x>2] Көпөлшемді массивтермен жұмыс істеу кезінде бізде деректердің пішінін немесе өлшемін қалай да өзгерту керек деген жағдай жиі туындайды, мысалы, егер бізде қандай да бір көпөлшемді құрылым болса, біз оны бір, бірөлшемді массивке орналастырғымыз келеді және кейбір мәндерді көргіміз келеді. NumPy-де мұны келесі әдістерді қолдана отырып жасауға болады: flatten және reshape. Біздің матрицада сақталған барлық мәндерді бір өлшемді массивке орналастыру үшін жазуыңыз керек
x=np.array([[1,2,3],[6,5,4]]) x.flatten() Reshape әдісін қолдана отырып, біз басқа өлшемдегі осы элементтерден белгілі бір массив ала аламыз. Ол үшін reshape әдісінде біз көргіміз келетін екі X және Y осьтері бойынша жаңа мәндерді беру керек.
x.reshape((6,1)) Айта кету керек, жаңа пішіннің мөлшері элементтер саны бойынша бастапқы матрицаның өлшемінен аспауы керек, яғни егер матрицада алты элемент болса, біз, мысалы, 15 элемент болатын пішінді орната алмаймыз, біз бірден қателік жібереміз.
Сондай-ақ, resize әдісін қолдана отырып, бастапқы массивтің пішінін өзгертуге болады. Resize мен reshape арасындағы айырмашылық-resize бастапқы массивті автоматты түрде өзгертеді, ал reshape оның пішінін өзгертеді.
x.resize((6, 1))
NumPy-де құрылымдар құруды үйренгеннен кейін, біз олардың үстінен бірнеше математикалық амалдарды жасай аламыз, мысалы, векторларды бір-біріне қосуға, векторларды матрицаларға көбейтуге және т.б. Кітапханада қандай операцияларды жасауға болатын екі вектордың мысалын қарастырайық.
v = np.array([9,10]) w = np.array([11,12]) NumPy-де векторларды екі жолмен қосуға болады: кітапханада кіріктірілген әдісті қолдана отырып немесе + операторын қолдана отырып.
res = v + w res = np.add(v, w) Айта кету керек, операцияның бұл түрі элемент бойынша қосылуды білдіреді, яғни біз әр элементтерді бір біріне қосамыз.
Сол сияқты біз екі вектордың айырмасын көре аламыз
res = v - w res = np.subtract(v, w) немесе векторларды көбейту
res = v * w res = np.multiply(v, w) Айта кету керек, векторлар арасындағы скалярлық көбейтіндіні есептеу немесе векторды матрицаға көбейту үшін біз басқа әдісті қолдануымыз керек. Ол dot деп аталады және кіріске біз көбейткіміз келетін екі векторды алады. Екі вектордың скаляр көбейтіндісін көрейік делік, оның нәтижесі қандай да бір массив емес, белгілі бір Сан болады.
res = np.dot(v, w) Сол сияқты, dot функциясын қолдана отырып, біз векторларды матрицалармен көбейте аламыз немесе олардың арасында басқа да көбейтулер жасай аламыз.
3.2 SciPy кітапханасымен танысу
SciPy кітапханасы-әртүрлі есептеулер үшін өте ыңғайлы кітапхана. Оған оңтайландыру әдістері, сызықтық алгебра әдістері, сигналдар мен кескіндерді өңдеу әдістері кіреді. Біз сызықтық алгебрасы бар модульге тоқталамыз және кері матрицаны, детерминантты, меншікті сандарды қалай табуға болатындығын қарастырамыз. Сондай-ақ, функцияның минимумын қалай табуға болатынын көрейік. Сызықтық алгебрасы бар модульге көшейік.
Алдымен SciPy-ден тиісті модульдерді импорттау керек.
fromscipyimportlinalg fromscipy importoptimize importnumpyasnp importmatplotlib.pyplotasplt Енді келесі матрицаны қарастырып, осы матрицаның детерминантын табуға тырысайық.
A = np.array([[1,3,5],[2,5,1],[2,3,8]]) SciPy кітапханасында кіріске матрицаны қабылдайтын тиісті det әдісі бар. Бұл әдістің нәтижесі Сан болады
linalg.det(A) Детерминант тек квадрат матрицалар үшін есептелетінін ескерген жөн, сондықтан егер det әдісіне квадрат емес матрицаны беруге тырыссақ, онда қатені аламыз.
Бұл жағдайда матрицаның детерминанты 0-ге тең емес екенін көреміз. Тиісінше, біз оған кері матрицаны табуға тырысамыз. Ол үшін invoke әдісі қолданылады.