python_數據分析_numpy庫

一、創建ndarray

*ndarray是NumPy中表示數組的重要類型

1、使用np.array()創建

*參數列表:[1,2,3,4]

注:(1)、numpy默認ndarray的所有元素的類型是相同的
?
(2)、如果傳入的數據類型不同,會被按照優先級強制轉換為同一類型,其中優先級為 ? str >float >int
?
(3)、ndarray常見的數據類型:int: int8、uint8、int16、int32、int64float:float16、float32、float64str:字符串
a = [1,2,3,4,5]
n = np.array(a)
print(n)
#顯示類型
print(type(n))
#顯示形狀
print(n.shape)
2、使用np的routines函數創建
(1)、np.ones(shape,dtype = None,order = 'C')

*創建一個所有元素都為1的多維數組

參數說明:

  • shape:形狀

  • dtype=None,元素類型

order:{‘C’,‘F’},可選,默認值:C是否在內存中以行主或列主順序存儲多維數據,一般默認

n = np.ones(shape=(3,),dtype = np.int8)
(2)、np.zeros(shape,dtype = float,order = 'C')

*創建一個所有元素都為0的多維數組

參數說明:

  • *shape:形狀

  • *dtype = None:元素類型

n = np.zeros(shape = (5,5),dtype = np.int16)
(3)、np.full(shape,fill_value,dtype = None,order = 'C')

*創建一個所有元素都為指定元素的多維數組

參數說明:

  • *shape:形狀

  • *fill_value:填充值

  • *dtype = None:元素類型

n = np.full(shape = (3,4),fill_value = 8)
(4)、np.eye(N,M=None,k=0,dtype=float)

*對角線為1其他位置為0的二維數組

參數說明:

  • *N:行數

  • *M:列數,默認為None,表示和行數一樣

  • *k :主對角線向右偏移的位置

  • *dtype = None:元素類型

n = np.eye(9,9,k=3)
(5)、np.linspace(start,stop,num = 50,endpoint = True,restep = False,dtype = None)

*創建一個等差數列

參數說明:

  • start:開始值

  • stop:結束值

  • num= 50:等差數列中默認有50個數

  • endpoint = True:是否包含結束值

  • restep = False:是否返回等差值(步長)

  • dtype = None:元素類型

n = np.linspace(1,9,5)
print(n)
(6)、np.arange(start,stop,step,dtype = None)

*創建一個數值范圍的數組

*和Python中range功能類似

參數說明:

start:開始值

stop:結束值(不包含)

step:步長

dtype = None:元素類型

n = np.arange(2,10,2)
print(n)
(7)、np.random.randint(low,high = None,size = None,dtype = None)

*創建一個隨機整數的多維數組

參數說明:

  • low:最小值

  • high:None:最大值

    • 注:high=None時,生成的數值在(0,low)之間

    • 如果使用high這個值,則生成的數值在(low,high)之間

  • size = None:數組形狀,默認只輸出一個隨機值

  • dtype = None:元素類型

#隨機整數:單個數
n = np.random.randint(3,10)
print(n)
#隨機整數:一維數組
n = np.random.randint(3,10,size=6)
print(n)
#隨機整數:二維數組
n = np.random.randint(3,10,size=(3,4))
print(n)
#隨機整數:三維數組
n = np.random.randint(0,256,size=(20,40,3))
print(n)
(8)、np.random.randn(d0,d1,......,dn)

*創建一個服從標準正態分布的多維數組

*創建一個所有元素都為1的多維數組

參數說明:

  • dn:第n個維度的值

    n = np.random.randn(1,2,3)
    print(n)

(9)、np.random.normal(loc = 0.0,scale = 1.0,size = None)

*創建一個服從正態分布的多維數組

參數說明:

  • loc:均值

  • scale:標準差,對應分布的寬度,scale越大,正態分布的曲線越矮胖,scale越小,曲線越高瘦

  • size = None:數組形狀

n = np.random.normal(10,0.5,size=(3,4))
print(n)
(10)、np.random.random(size = None)

*創建一個元素為0~1(左閉右開)的隨機數的多維數組

參數說明:

  • size= None:數組形狀

n = np.random.random(size=(3,4))
print(n)
(11)、np.random.rand(d0,d1,......,dn)

*同np.random.random(size = None)

*創建一個元素為0~1(左閉右開)的隨機數的多維數組

參數說明:

  • dn:第n個維度的數值

n = np.random.rand(3,4)
print(n)

二、ndarray的屬性

1、ndim(維度)
n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
2、shape(形狀)

*三個數字分別表示各個維度的長度

n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
3、size(總長度)

*即:行和乘列和

n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
c = n.size
print(c)
4、dtype(元素類型)
n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
c = n.size
print(c)
l = n.dtype
print(l)

三、ndarray的基本操作

1、索引

一維和列表索引的操作一致。

2、 根據索引修改數據

(1)、將第二行全部數字改為0.88

n= np.random.rand(3,4)
print(n)
#將第二行全部數字改為0.88
n[1]=0.88
print(n)

(2)、將第二行最后一個數改為0.88

a= np.random.rand(3,4)
print(a)
#將第二行最后一個數改為0.88
a[1][3]=0.88
print(a)
3、切片
import numpy as np
#列表有逗號間隔
# I = [1,2,3,4,5,6,7,8]
# a = I[2:6]
# b = I[::-1]   #翻轉
# print(a)
# print(b)
# #數組沒有逗號間隔
# n = np.array(I)
# a = n[2:6]
# print(n)
# print(a)#對于二維數組的行切片
n = np.random.randint(0,10,size=(6,8))
# #取一行
# print(n[0])
# #連續取多行
# print(n[1:4])
# #取不連續多行
# print(n[[1,2,4]])#對于二維數組的列切片
n = np.random.randint(0,10,size=(6,8))
print(n)
#取一列
print(n[:,0])   #取第一列
print(n[1:4,0])  # 取第二到第四行的第一列
#取連續的多列:切片
print(n[:,2:5])  #取第三到第五列的所有行
#取不連續的多列:中括號
print(n[:,[1,3,4]])  #取第二列和第四列和第五列的所有行
4、翻轉

(1)、行翻轉

n[::-1]

(2)、列翻轉

n[:,::-1]
5、變形

使用reshape函數

import numpy as npn = np.arange(1,21)
print(n)#reshape:將數組改變形狀  變成二維
a = np.reshape(n,newshape=(4,5))
print(a)#使用-1:表示任意剩余維度長度
e = n.reshape(4,-1)
print(e)
r = n.reshape(-1,2)
print(r)
6、級聯(合并)
#級聯(合并)
a = np.concatenate((n1,n2))  #上下合并
print(a)l = np.concatenate((n1,n2),axis=0)  #上下合并
print(l)p = np.concatenate((n1,n2),axis=1)  #左右合并
print(p)#左右合并
i = np.hstack((n1,n2))
print(i)#上下合并
u = np.vstack((n1,n2))
print(u)
7、拆分

(1)、np.split()

(2)、np.hsplit()

(3)、np.vsplit()

import numpy as npn = np.random.randint(0,100,size=(4,4))
print(n)
a = np.split(n,4)
print(a)
b = np.hsplit(n,4)
print(b)
#垂直拆分,平均拆成3份
c = np.vsplit(n,4)
print(c)
#按照指定位置拆分
d = np.vsplit(n,(1,2,4))
print(d)
#水平拆分
e = np.hsplit(n,4)
print(e)
print()
#split:做水平和垂直拆分
#axis = 0:行
#axis = 1:列
a = np.split(n,4)
a = np.split(n,4,axis=0)
print(a)
print()
m = np.split(n,4)
m = np.split(n,4,axis=1)
print(m)
8、拷貝
import numpy as np#n2不會隨著n的變化而變化
n = np.random.randint(0,10,size=(2,3))
n2 = n.copy()
n[0][0] = 0
print(n2)
print(n)#注:如果用n3 = n,則n2會隨著n的變化而變化
n3 = n
print(n3)

四、numpy的聚合操作

1、求和np.sum()
import numpy as npn = np.arange(10)
print(n)s = np.sum(n)
print(s)n = np.random.randint(0,10,size=(3,5))
print(n)
s1 = np.sum(n)
print(s1)   #全部數加起來
s2 = np.sum(n,axis=0)
print(s2)   #表示每一列的多行求和
s3 = np.sum(n,axis=1)
print(s3)   #表示每一行的多列求和
2、最小值np.min
3、最大值np.max
4、平均值np.mean
5、平均值np.average
6、中位數np.median
7、百分位數np.percentile
8、最小值對應的下標np.argmin
9、最大值對應的下標np.argmax
10、標準差np.std
11、方差np.var
12、次方,求冪np.power
13、按條件查找np.argwhere
14、np.nansum
  • *nan:數值類型,not a number:不是一個正常的數值,表示空

  • *np.nan:float類型

#對于含有空的數組,要用np.nansum進行求和
n = np.array([1,2,3,np.nan])
print(n)
#實質是去掉空值后的數組進行求和
s4 = np.nansum(n)
print(s4)

五、矩陣操作

1、基本的矩陣操作

算術運算符:加減乘除

矩陣和矩陣之間運算

數與矩陣運算

2、矩陣乘積

np.dot(第一個矩陣的列數等于第二個矩陣的行數)

import numpy as npn1 = np.random.randint(0,10,size=(4,4))
n2 = np.random.randint(0,10,size=(4,5))
print(n1,n2)
print()
n3 = np.dot(n1,n2)
print(n3)
3、矩陣的逆
n4 = np.linalg.inv(n2)
print(n4)
4、行列式的計算
n5 = np.round(np.linalg.det(n1))
print(n5)
5、矩陣的秩
n6 = np.linalg.matrix_rank(n1)
print(n6)

六、ndarray的廣播機制

(1)、為缺失的維度補維度

(2)、缺失元素用已有的數組填充

import numpy as npx = np.full(shape=(3,3),fill_value=2)
print(x)
y = np.arange(3)
print(y)
z = x+y
print(z)
#注:第二個數組會自動補上兩行[0 1 2],然后在進行相加

七、數學操作

import numpy as npn = np.array([1,2,3,5,5,44,55,66])#絕對值
print(np.abs(n))
#平方根
print(np.sqrt(n))
#平方
print(np.square(n))
#指數
print(np.exp(n))
#自然對數
print(np.log(n))
#以2為底的對數
print(np.log2(n))
#以10為底的對數
print(np.log10(n))
#正弦函數
print(np.sin(n))
#余弦函數
print(np.cos(n))
#正切函數
print(np.tan(n))
#向上取整
print(np.ceil(n))
#四舍五入
print(np.round(n,2))
#向下取整
print(np.floor(n))
#累加
print(np.cumsum(n))

八、ndarray的排序

1、np.sort()

不改變輸入

import numpy as npn = np.array([55,44,8,2,9,7,3,6])
print(np.sort(n))
print()
2、ndarray.sort()

本地處理,不占用空間,但不改變輸入

import numpy as npn1 = np.random.randint(0,10,size=8)
print(n1)
n1.sort()
print(n1)

九、文件操作

1、保存數組到npy或npz文件

save:保存ndarray到一個npy文件。

savez:將多個array保存到一個npz文件中。

import numpy as npx = np.arange(5)
y = np.arange(10,20)np.save('x',x)
np.savez('arr.npz',xarr = x,yarr = y)
a = np.load('x.npy')
b = np.load('arr.npz')['yarr']print(a)
print(b)
2、保存數組到csv或txt文件
n = np.random.randint(0,10,size=(3,4))
#存儲到csv或txt
#delimiter = ',':分隔符
np.savetxt('arr.csv',n,delimiter=',')
#讀取csv或txt
#注:最新版numpy不能用dtype要用astype
c = np.loadtxt('arr.csv',delimiter=',').astype(np.int8)
print(c)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696744.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696744.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696744.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue--兩種定時任務cron表達式組件比較選擇

背景&#xff1a; 使用vue頁面中cron表達式的組件&#xff0c;實現定時任務參數配置。 方案1 vue-cron 安裝插件 npm install vue-cron --save 全局引入&#xff0c;修改main.js import Vue from vue import VueCron from vue-cron Vue.use(VueCron);頁面配置 html<el-…

Java入門-可重入鎖

可重入鎖 什么是可重入鎖? 當線程獲取某個鎖后&#xff0c;還可以繼續獲取它&#xff0c;可以遞歸調用&#xff0c;而不會發生死鎖&#xff1b; 可重入鎖案例 程序可重入加鎖 A.class,沒有發生死鎖。 sychronized鎖 package com.wnhz.lock.reentrant;public class Sychroniz…

多普勒變化率的應用 與 FPGA

1.多普勒變化率是一個描述波源和觀察者相對速度變化的物理量&#xff0c;它與加速度有關。 多普勒效應是指當波源和觀察者之間存在相對運動時&#xff0c;觀察者接收到的波頻率與波源發射的頻率之間的差異。這種現象在聲波、電磁波等多種波動中都會出現。多普勒變化率通常用來…

linux系統內核升級

1.查看舊版本內核 2.導入密鑰 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 3.安裝yum源 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm4.啟用elrepo-kernel倉庫并安裝最新內核版本 yum --enablerepoelrepo-kernel install …

一文弄明白KeyedProcessFunction函數

引言 KeyedProcessFunction是Flink用于處理KeyedStream的數據集合&#xff0c;它比ProcessFunction擁有更多特性&#xff0c;例如狀態處理和定時器功能等。接下來就一起來了解下這個函數吧 正文 了解一個函數怎么用最權威的地方就是 官方文檔 以及注解&#xff0c;KeyedProc…

c++實現棧和隊列類

c實現棧和隊列類 棧(Stack)Stack示意圖Stack.cpp 隊列(queue)queue 示意圖queue.cpp 棧(Stack) Stack示意圖 Stack.cpp #pragma once #include "ListStu.cpp"template<typename T> class Stack { public: /* * void push(T& tDate)* 參數一 &#xff1a;…

【OCR專題文章】

目錄 一、數據獲取及預處理方法篇 二、兩階段算法篇(檢測識別) 三、一階段算法篇(Enc-Dec) 四、拓新篇 本欄聚焦在OCR的相關算法&#xff0c;專欄內文章的代碼均已實現。 一、數據獲取及預處理方法篇 【數據獲取】 合同數據獲取&#xff1a;【OCR】【專題系列】二、數據獲取-…

解決windows無法訪問wsl下docker服務

筆者在初學使用wsl跑docker時,遇到了windows無法訪問的問題,并且瀏覽了大部分的文章,發現并沒有起效,在反復試錯終于成功之后,總結為以下幾點: 1.升級至wsl2 2.將.wslconfig文件(用戶文件夾下)中的如下鏡像服務關閉刪除 networkingModemirrored 3.打開wsl防火墻相應的端口 …

記錄解決uniapp使用uview-plus在vue3+vite+ts項目中打包后樣式不能顯示問題

一、背景 從 vue2uview1 升級到 vue3vitetsuview-plus ,uview組件樣式打包后不顯示&#xff0c;升級前uview 組件是可以正常顯示&#xff0c;升級后本地運行是可以正常顯示&#xff0c;但是打包發布成H5后uview的組件無法正常顯示&#xff0c;其他uniapp自己的組件可以正常顯示…

Vue 中 onclick和@click區別

文章目錄 一、直接上結論二、驗證代碼&#xff0c;可直接運行三、點擊結果 一、直接上結論 onclick 只能觸發 js的原生方法&#xff0c;不能觸發vue的封裝方法click 只能觸發vue的封裝方法&#xff0c;不能觸發js的原生方法 二、驗證代碼&#xff0c;可直接運行 <!DOCTYP…

Vue3 + Ts (使用lodash)

安裝 npm i --save lodash使用 import _ from lodash??報警告&#xff1a;&#xff01;&#xff01;&#xff01; 此時還需要安裝ts聲明文件庫 npm install types/lodash -D安裝之后重啟Vscode還是會提示上面的警告&#xff0c;此時還需在tsconfig.ts里面配置 {"c…

快速將excel/word表格轉換為web頁面(html)的方法

前言 在進行開發企業信息化建設的過程&#xff0c;應該有很多這樣的場景&#xff0c;就是將現有的電子表格記錄的方式轉換為在數據系統中進行網頁上報。也就是需要根據當前一直使用的表格制作一個上傳這個表格信息的網頁&#xff0c;如果要減少系統的使用學習成本&#xff0c;…

【Day55】代碼隨想錄之動態規劃_買賣股票含冷凍期和手續費

文章目錄 動態規劃理論基礎動規五部曲&#xff1a;出現結果不正確&#xff1a; 1. 最佳買賣股票的時機含冷凍期2. 買賣股票的最佳時機含手續費 動態規劃理論基礎 動規五部曲&#xff1a; 確定dp數組 下標及dp[i] 的含義。遞推公式&#xff1a;比如斐波那契數列 dp[i] dp[i-1…

【Elasticsearch專欄 01】深入探索:Elasticsearch的正向索引和倒排索引是什么

文章目錄 什么是Elasticsearch的正向索引和倒排索引&#xff1f;1.倒排索引&#xff08;Inverted Index&#xff09;2.正向索引&#xff08;Forward Index&#xff09;3.小結 什么是Elasticsearch的正向索引和倒排索引&#xff1f; 首先&#xff0c;要明確的是&#xff0c;Ela…

leetcode:78.子集

1.樹形結構&#xff1a;往后依次取該數字往后的數字&#xff08;前面的不要取&#xff0c;否則子集會重復&#xff09;&#xff1b;每一層遞歸的結果都要放入結果集&#xff0c;而并非只放葉子節點。 代碼實現&#xff1a; #達到了葉子節點&#xff08;終止條件&#xff09; …

抖音百科詞條創建在哪里?

抖音百科就是頭條百科&#xff0c;頭條百科是一個在線百科全書平臺&#xff0c;用戶可以在上面創建、編輯和瀏覽各種百科詞條。頭條百科詞條可以被抖音抓取到&#xff0c;從而獲得更多流量和曝光&#xff0c;所以當你創建一個抖音百科詞條的時候&#xff0c;就能更加提高自身的…

logbak日志單獨打印(方法層級)

logbak日志單獨打印 問題 前幾天朋友在群里問&#xff0c;怎么針對方法打印打印日志&#xff0c;不是針對類。 解決辦法 方法層 GetMapping("getLog1")public String getLog1(){Logger specialLogger LoggerFactory.getLogger(TestController.class.getName() …

人工智能_CPU安裝運行ChatGLM大模型_ChatGlm-6B_啟動命令行對話_安裝API調用接口_005---人工智能工作筆記0100

然后我們再進入 /data/module/ChatGLM-6B-main文件夾 然后我們去啟動,命令行工具 python3 cli_demo.py 可以看到也是可以用了. 正常可以用了. 然后主要來看,如何使用api來調用呢,這樣才可以,做自己的界面 可以看到就非常簡單了只需要: 走到 /data/module/

9-1 A. 圖綜合練習--構建鄰接表

題目描述 已知一有向圖&#xff0c;構建該圖對應的鄰接表。 鄰接表包含數組和單鏈表兩種數據結構&#xff0c;其中每個數組元素也是單鏈表的頭結點&#xff0c;數組元素包含兩個屬性&#xff0c;屬性一是頂點編號info&#xff0c;屬性二是指針域next指向與它相連的頂點信息。 單…

即時設計和sketch對比

在設計領域&#xff0c;有很多易于使用的設計軟件&#xff0c;每個軟件都有自己的特點&#xff0c;但在使用中也會有一些限制。例如&#xff0c;傳統的Sketch。Sketch是一款古老的UI設計軟件。自2010年推出以來&#xff0c;已有10多年的歷史&#xff0c;但它始終僅限于MAC。到目…