日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Numpy基础(part1)--ndarray数组

發布時間:2023/12/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Numpy基础(part1)--ndarray数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鄙人學習筆記,這個筆記以例子為主。
開發工具:Spyder


文章目錄

    • 使用python做數據分析的常用庫
    • numpy概述
    • ndarray數組
      • 內存中的ndarray對象
      • ndarray數組對象的創建
        • 創建方式1
        • 創建方式2
        • 創建方式3
        • 創建方式4
        • 舉個例子
      • ndarray對象屬性的基本操作
        • 數組的維度(np.ndarray.shape)
        • 元素的類型(np.ndarray.dtype)
        • 數組元素的個數(np.ndarray.size)
        • 數組元素索引(下標)
      • ndarray對象屬性操作詳解
        • numpy的內部基本數據類型
        • 自定義復合數據類型
          • 舉個例子1
          • 舉個例子2(日期類型的數組)
        • 類型字符碼
        • 類型字符碼格式


使用python做數據分析的常用庫

  • numpy 基礎數值算法
  • scipy 科學計算
  • matplotlib 數據可視化
  • pandas 序列高級函數

numpy概述

①Numerical Python,數值的Python,補充了Python語言所欠缺的數值計算能力。
②Numpy是其它數據分析及機器學習庫的底層庫。
③Numpy完全標準C語言實現,運行效率充分優化。
④Numpy開源免費。

ndarray數組

ndarray數組是用np.ndarray類的對象表示的n維數組。

  • 例子

內存中的ndarray對象

  • 元數據(metadata)

元數據存儲對目標數組的描述信息,如:dim count(維數)、shape(維度)、dtype(數據類型)、size(元素個數)、data(作為一個指針,指向具體數據)等。

  • 實際數據

實際數據是完整的數組數據。
將實際數據與元數據分開存放,一方面提高了內存空間的使用效率,另一方面減少對實際數據的訪問效率,提高性能。

ndarray數組對象的創建

創建方式1

  • 語法
np.array(任何可被解釋為numpy數組的邏輯結構)
  • 例子

創建方式2

  • 語法
np.arange(起始值, 終止值, 步長)
  • 例子

創建方式3

  • 語法
np.zeros(數組元素個數, dtype = “類型”)
  • 例子

創建方式4

  • 語法
np.ones(數組元素個數, dtype = “類型”)
  • 例子

舉個例子

代碼:

import numpy as npa1 = np.array([[1, 2, 3], [4, 5, 6]]) print(a1, a1.shape)a2 = np.arange(0, 5) print(a2)a3 = np.zeros(5, dtype = 'int32') print(a3)a4 = np.ones(5, dtype = 'float32') print(a4)a5 = np.zeros_like(a1) print(a5)

備注:np.zeros_like(a1)為構造一個維度類似于a1的全0數組。

結果:

  • ndarray數組對象的特點

①ndarray數組是同質數組,即所有元素的數據類型必須相同。
②ndarray數組的下標從0開始,最后一個元素的下標為數組長度減1。

ndarray對象屬性的基本操作

數組的維度(np.ndarray.shape)

  • 例子

元素的類型(np.ndarray.dtype)

  • 例子

備注:【<U11表示11個Unicode字符】

數組元素的個數(np.ndarray.size)

  • 例子


備注:size表示底層元素個數,len表示最外層對象個數。

數組元素索引(下標)

  • 例子

ndarray對象屬性操作詳解

numpy的內部基本數據類型

類型名類型表示符
布爾型bool_
有符號整數型int8(-128~127)/int16/int32/int64
無符號整數型uint8(0~255)/uint16/uint32/uint64
浮點型float16/float32/float64
復數型complex64/complex128
字串型str_,每個字符用32位Unicode編碼表示

自定義復合數據類型

舉個例子1

我們有以下數據:

import numpy as npdata=[('xb', [90, 80, 85], 15),('dh', [92, 81, 83], 16),('xh', [95, 85, 95], 15) ]

直接將data放入np.array()中:


嗯,報錯了!說明np.array()不能識別我們的data。

我們可以設置dtype,來識別數據:

import numpy as npdata=[('xb', [90, 80, 85], 15),('dh', [92, 81, 83], 16),('xh', [95, 85, 95], 15) ]a01= np.array(data, dtype='U2, 3int32, int32') print(a01)

備注:U代表uniocode字符,2代表兩個,若出現第三個字符,則python會無法識別。int32代表整形,3int32表示包含3個整形的列表。

輸出結果:

我們試著用2種方法讀取數據:

print(a01[2][2]) print(a01[2]['f2']) #f2表示下標為2的字段

結果:

若data中字段比較多,我們可以使用另一種設置dtype的方式:

import numpy as npdata=[('xb', [90, 80, 85], 15),('dh', [92, 81, 83], 16),('xh', [95, 85, 95], 15) ]a02= np.array(data, dtype=[('name', 'str', 2),('scores', 'int32', 3),('age', 'int32', 1)])

讀取數據:

print(a02) print(a02[2]['age'])

結果:

我們可以使用第三種設置dtype的方式:

import numpy as npdata=[('xb', [90, 80, 85], 15),('dh', [92, 81, 83], 16),('xh', [95, 85, 95], 15) ]ary = np.array(data, dtype = {'names':['name', 'scores', 'age'],'formats':['U2', '3int32', 'int32']})

再讀取一下數據:

print(ary) print(ary[2]['name'])

結果:

舉個例子2(日期類型的數組)

數據:

import numpy as npdata = ['2020', '2015-07-01','2012-01-01', '1997-09-28']

直接將data放入np.array(),并將數據和數據類型打印出來:

轉換數據類型, 并將數據和數據類型打印出來:

除此之外,原始數據還可以寫出時、分、秒,但是由于設定轉換的數據類型是精確到Day所以,輸出的結果,不會顯示出時、分、秒:

import numpy as npdata = ['2020', '2015-07-01','2012-01-01', '1997-09-28 11:10:01']d01 = np.array(data) print(d01, d01.dtype)#轉換成精確到天的datetime64數據類型 d02 = d01.astype('M8[D]') print(d02, d02.dtype)

結果:

備注:若日期寫成除了2020-01-01之外的格式(如:2020/01/01)則python無法轉成時間格式。

時間之間做減法:

import numpy as npdata = ['2020', '2020-03-28','2012-01-01', '1997-09-28 11:10:01']d01 = np.array(data) d02 = d01.astype('M8[D]')print(d02[1] - d02[0])

結果:

類型字符碼

內部基本數據類型字符碼(簡寫)
np.bool_?
np.int8/16/32/64i1/i2/i4/i8
np.uint8/16/32/64u1/u2/u4/u8
np.float16/32/64f2/f4/f8
np.complex64/128c8/c16
np.str_U<字符數>
np.datetime64M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s]

類型字符碼格式

  • 格式
<字節序前綴><維度><類型><字節數或字符數>
  • 例子
類型字符碼釋義
3i4大端字節序,3個元素的一維數組,每個元素都是整型,每個整型元素占4個字節。
<(2,3)u8小端字節序,6個元素2行3列的二維數組,每個元素都是無符號整型,每個無符號整型元素占8個字節。
U7包含7個字符的Unicode字符串,每個字符占4個字節,采用默認字節序。
  • 字節序前綴
字節序前綴含義
<小端
>大端
[=]硬件字節序

總結

以上是生活随笔為你收集整理的Numpy基础(part1)--ndarray数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。