Python的基礎學習1 2 ufunc的操作

2021-10-02 23:29:01 字數 2186 閱讀 9702

由於下述內容會用到函式enumerate()這個函式,所以先提前說明一下。enumerate--列舉列舉,主要用於迴圈語句中同時遍歷乙個陣列的索引和物件。

x=['a','b','c'];

#從陣列x中遍歷索引i和物件t

for i,t in enumerate(x):

print (i,t)

#第二個引數表示索引從2開始編號

for i,t in enumerate(x,2):

print (i,t)

輸出為:

enumerate(x)

enumerate(x,2)0a

2a1b

3b2c

4cpython3 中沒有xrange。此處range就是乙個生成器,用法與numpy庫中的arrange相似:range(始,終,間隔),始和間隔都可以省略。range(3)表示逐次產生0,1,2。

for i in range(3):

print (i)

輸出為:0 1 2

numpy庫下的簡單函式操作:np.sin(x,out=y) 對陣列x中的每個元素進行操作,並輸出為y,第二個引數為輸出引數可以省略

numpy下的很多ufunc函式都是用c語言實現,因此大量計算時速度快。但是單個計算時速度可能比python慢,因為要進行語言之間的轉化(c和p)。

math庫中的sin函式只能計算乙個數,不能計算逐個計算陣列中元素。

%timeit計算單元時間,%%timeit計算整個程式時間

import numpy as np

import math as m

#比較單次時間

x=5%timeit m.sin(x)

%timeit np.sin(x)

def sin_m(x):

for i,t in enumerate(x):

x[i]=m.sin(t)

#比較整個迴圈時間

x1=[i*0.001 in range(100000000)]

%timeit sin_m(x1)

%timeit np.sin(x1)

其中常見的加、減、乘、除、冪次、求餘可以用一般的運算子代替,也可以用np._中的ufunc函式操作。

import numpy as np

x1=np.arange(0,4)

x2=np.arange(0,4)

x3=x1+x2

x3=np.add(x1,x2)

兩陣列比較:依次比較各個元素

布林運算:或or、且and、非not,要用logical_使用

import numpy as np

x1=np.arange(0,4)

x2=np.arange(5,9)

x1x2)

輸出為:array([true,true,true,true]),array([false,false,false,false]),array([false,false,false,false])

先定義乙個函式,再用np.frompyfunc(func,nin,nout)將該函式轉化成ufunc函式,因為ufunc函式可以對陣列進行操作。其中func為所定義的函式名,nin為輸入引數個數,nout為輸出引數個數。

比如想計算乙個分段函式的一列函式值:

python 的基礎 學習 12天,函式

args就是接受實參對應的剩餘的位置引數,並將其放在元組中。在定義函式時,args代表的是聚合。def func args print args func 1,34,jdai 5,56,66 1,34,jdai 5,56,66 def func a,b,c,d,args,e 男 print a pr...

python基礎12 語法

字元型別 str 比較大小 從第1個開始比較 數值型別 int 比較大小 整個值比較 strip 刪除首尾 空白 sort 排序 永久 sorted 排序 臨時 reverse 倒序 len 確定長度 lower 轉換為小寫 upper 轉換為大寫 title 首字母大寫 if 條件判斷 and 多...

Python基礎 12 模組

模組是乙個包含所有你定義的函式和變數的檔案,其字尾名是.py。模組可以被別的程式引入,以使用該模組中的函式等功能。模組名要遵循python變數命名規範,不要使用中文 特殊字元 先檢視系統是否已存在該模組,檢查方法是在python互動環境執行import abc,若成功則說明系統存在此模組 impor...