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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

numpy学习2:数组创建方式

發布時間:2025/3/20 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy学习2:数组创建方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

Numerical Python,即數值Python包,是Python進行科學計算的一個基礎包,所以是一個掌握其他Scipy庫中模塊的基礎模塊,一定需要先掌握該包的主要使用方式。

  • 官網:http://www.numpy.org/
  • 官方文檔:https://docs.scipy.org/doc/numpy/user/index.html

NumPy模塊是Python的一種開源的數值計算擴展,是一個用python實現的科學計算包,主要包括:

  • 一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組,稱為ndarray(N-dimensional array object)
  • 用于對整組數據進行快速運算的標準數學函數:ufunc(universal function object)
  • 實用的線性代數、傅里葉變換和隨機數生成函數。
  • NumPy和稀疏矩陣的運算包Scipy配合使用更加方便。

其中,numpy有一個核心的數據結構,叫做ndarray。

下面再了解一下ndarray的基本特征。

  • NumPy的數組類被稱作ndarray。通常被稱作數組。注意numpy.array和標準Python庫類array.array并不相同,后者只處理一維數組和提供少量功能。
  • 一種由相同類型的元素組成的多維數組,元素數量是實現給定好的
    元素的數據類型由dtype(data-type)對象來指定,每個ndarray只有一種dtype類型
  • ndarray的大小固定,創建好數組后數組大小是不會再發生改變的

二、ndarray對象創建

可以通過numpy模塊中的常用的幾個函數進行創建ndarray多維數組對象,主要函數如下:

  • array函數:接收一個普通的python序列,并將其轉換為ndarray
  • zeros函數:創建指定長度或者形狀的全零數組。
  • ones函數:創建指定長度或者形狀的全1數組。
  • empty函數:創建一個沒有任何具體值的數組(準備地說是創建一些未初始化的ndarray多維數組)

2.1、array函數

array對象的定義:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

上面的構造器接受以下參數:

序號參數及描述
1. object任何暴露數組接口方法的對象都會返回一個數組或任何(嵌套)序列。
2. dtype數組的所需數據類型,可選。
3. copy可選,默認為true,對象是否被復制。
4. orderC(按行)、F(按列)或A(任意,默認)。
5. subok默認情況下,返回的數組被強制為基類數組。 如果為true,則返回子類。
6. ndimin指定返回數組的最小維數。

看了這么多定義,下面看看具體的實例吧。

  • 實例1
import numpy as np #例子01 a = np.array([1,2,3,4,5]) print(a) print(type(a))

輸出:[1 2 3]
<class ‘numpy.ndarray’>

  • 創建多個維度
a2 = np.array([[1,2],[3,4]]) print(a2)

輸出:
[[1 2]
[3 4]]

  • 通過ndmin控制最小維度
#最小維度 a3 = np.array([1,2,3,4,5],ndmin = 3) print(a3)

輸出
[[[1 2 3 4 5]]]

ndmin這個參數的意思是,不管你給的數據的維度是多少,我總是會創建給出的最小的維度,比如這里ndmin=3,雖然給出的數據是一位的,但是也會創建一個三維的處理。

2.2、empty函數

  • numpy.empty
    創建指定形狀和dtype的未初始化數組
  • numpy.empty(shape, dtype = float, order = ‘C’)

構造器接受下列參數:

序號參數及描述
1. Shape空數組的形狀,整數或整數元組
2. Dtype所需的輸出數組類型,可選
3. Order'C’為按行的 C 風格數組,'F’為按列的 Fortran 風格數組

舉例:

#數組元素為隨機值:創建一個4*4的的矩陣,數據為隨機 arr = np.empty((4,4),dtype = 'i1') print(arr)

輸出:
[[ 1 0 0 0]
[ 0 0 0 0]
[ 48 6 50 38]
[ -7 127 0 0]]

  • numpy.zeros
    返回特定大小,以0填充
#例 arr = np.zeros((3,3)) print(arr) # 自定義類型 arr = np.zeros((3,3), dtype = [('x', 'i2'), ('y', 'i2')]) print(arr)
  • numpy.ones
    返回特定大小,以1填充
arr = np.ones((2,3,4)) print(arr) arr = np.ones((3,3), dtype = [('x', 'i4'), ('y', 'i4')]) print(arr)

輸出:

[[[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]][[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]] [[(1, 1) (1, 1) (1, 1)][(1, 1) (1, 1) (1, 1)][(1, 1) (1, 1) (1, 1)]]

2.3、通過列表,元祖,元祖列表創建方式

這些主要是通過列表,元祖,元祖列表來創建的方式。

  • numpy.asarray
    類似 numpy.array 可以將Python序列轉換為ndarray
#來自列表 arr = [1,2,3,4] arr2 = np.asarray(arr) print(arr2) print(type(arr)) print(type(arr2))

輸出:
[1 2 3 4]
<class ‘list’>
<class ‘numpy.ndarray’>

#來自元組 arr = (1,2,3,4) arr2 = np.asarray(arr) print(arr2) print(type(arr)) print(type(arr2)) #來自元組列表 arr = [(1,2,3,4),(5,6,7,8)] arr2 = np.asarray(arr) print(arr2) print(type(arr)) print(type(arr2))

2.4、通過Numpy 來自數值范圍的數組(arange、linespace、logspace)

  • arange函數: 類似python的range函數,通過指定開始值、終值和步長來創建一個一維數組,注意:最終創建的數組不包含終值

  • linspace函數:通過指定開始值、終值和元素個數來創建一個一維數組,數組的數據元素符合等差數列,可以通過endpoint關鍵字指定是否包含終值,默認包含終值

  • logspace函數:和linspace函數類似,不過創建的是等比數列數組
    使用隨機數填充數組,即使用numpy.random中的random()函數來創建0-1之間的隨機元素,數組包含的元素數量由參數決定

  • numpy.arange
    這個函數返回ndarray對象,包含給定范圍內的等間隔值
    numpy.arange(start,stop,step,dtype)

arr = np.arange(1,20,5,dtype = float) print(arr)

輸出:
[ 1. 6. 11. 16.]

  • numpy.linspace
    與arange函數類似 等差數列
    numpy.linspace(start,stop,num,endpoint,retstep,dtype)
start起始值
stop結束值
num生成等間隔樣例的數量,默認為50
endpoint序列中是否包含stop 值 默認為 True
arr = np.linspace(10,20,9) print(arr)arr = np.linspace(10,20,5,endpoint=False) print(arr)arr = np.linspace(10,20,5,retstep=True) print(arr) #返回步長

輸出:
[10. 11.25 12.5 13.75 15. 16.25 17.5 18.75 20. ]
[10. 12. 14. 16. 18.]
(array([10. , 12.5, 15. , 17.5, 20. ]), 2.5)

  • numpy.logspace
    等比數列
    numpy.logscale(start, stop, num, endpoint, base, dtype)
1. start起始值是base ** start
2. stop終止值是base ** stop
3. num范圍內的數值數量,默認為50
4. endpoint如果為true,終止值包含在輸出數組當中
5. base對數空間的底數,默認為10
6. dtype輸出數組的數據類型,如果沒有提供,則取決于其它參數
arr = np.logspace(1,10,10,base = 2) print(arr)

輸出:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]

2.5、random創建方式

  • rand 返回 0 - 1 隨機值
  • randn 返回一個樣本具有標準正態分布
  • randint 返回隨機的整數,位于半開區間[low,hight)size = 10 (3,3)
  • random_integers(low[, high, size]) 返回隨機的整數,位于閉區間
  • random 返回隨機浮點數
arr = np.random.rand(9).reshape(3,3) print(arr)arr = np.random.rand(3,2,3) print(arr)arr = np.random.randn(9).reshape(3,3) print(arr)arr = np.random.randn(3,2,3) print(arr)arr = np.random.randint(1,9,size = (2,4)) print(arr)arr = np.random.random_integers(1,9,size =(2,4)) print(arr)arr = np.random.random((3,2,3)) print(arr)arr = np.random.randn(3,2,3) print(arr)

文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:cplus人工智能算法后端技術,獲取優質學習資源。

總結

以上是生活随笔為你收集整理的numpy学习2:数组创建方式的全部內容,希望文章能夠幫你解決所遇到的問題。

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