1. 程式人生 > >python中矩陣(matrix或array)運算比for迴圈速度更快

python中矩陣(matrix或array)運算比for迴圈速度更快

在matlab中進行矩陣元素處理時,使用矩陣運算比for迴圈快。在Python語言中也是這樣的。下面這個程式是一個簡單的測試。

import time as tm
import numpy as np
dim = 100000#資料長度(包含的元素個數)
x1 = np.ones(dim)
x2 = np.ones(dim)
yFor = np.ones(dim)
tStart = tm.clock()#開始計時
#for迴圈解算x1*x2(對應元素相乘)
for i in range(dim):
    yFor[i] = x1[i]*x2[i]
tEnd=tm.clock()#停止計時
tFor = tEnd-tStart#計算用時
tStart = tm.clock()#開始計時
#矩陣計算x1*x2(對應元素相乘)
yMatrix = x1*x2
tEnd = tm.clock()#停止計時
tMatrix = tEnd-tStart#計算用時
print 'for迴圈用時tFor=',tFor
print '矩陣運算用時tMatrix=',tMatrix
print '運算用時tFor-tMatrix=',tFor-tMatrix
print '運算結果的差(所有元素累積和)yFor-yMatrix=',np.sum(yFor-yMatrix)

相關推薦

python矩陣matrixarray運算for迴圈速度

在matlab中進行矩陣元素處理時,使用矩陣運算比for迴圈快。在Python語言中也是這樣的。下面這個程式是一個簡單的測試。 import time as tm import numpy as np dim = 100000#資料長度(包含的元素個數) x1 = np.

Iterator迭代器、增強for迴圈

二、Iterator介面 三、Iterator的實現過程 四、迭代器的併發修改異常 五、增強的for迴圈 一、迭代器(It

pythonlist列表、元組和array的區別-分別什麼時候使用?

list是列表,list中的元素的資料型別可以不一樣。array是陣列,陣列中的元素的資料型別必須一樣 Python中的列表(list)類似於C#中的可變陣列(ArrayList),用於順序儲存結構。它可以方便、高效的的新增刪除元素,並且列表中的元素可以是多種型別。列表很多操作都跟元組一

python矩陣維度, a,和 a 有什麼區別?

在python中矩陣維度, (a,)和 a 有什麼區別? 測試: import numpy as np trainx = np.linspace(-1, 1, 10) print(trainx.shape) print(trainx[0].shape) print(*trainx

python陣列numpy.array的基本操作

本文部分內容參考Daetalus的部落格。 為什麼要用numpy Python中提供了list容器,可以當作陣列使用。但列表中的元素可以是任何物件,因此列表中儲存的是物件的指標,這樣一來,為了儲存

2D平面關於矩陣Matrix跟圖形變換的講解

在二維平面上,常用的有以下三種基本的圖形變化: 1)Translation 2)Scale 3)Rotation 在Android的開發中,我們也經常會用到這樣的一些圖形變換,尤其是我們在寫自定義View時,更是會經常利用到Matrix來實現一些效果,比如平移,旋轉,縮放及

pythonenumerate的用法

bsp pos 元素 變量 lis 遍歷序列 rate too st3 先出一個題目:1.有一 list= [1, 2, 3, 4, 5, 6] 請打印輸出:0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印輸出, 2.將 list 倒序成 [6, 5, 4

Pythonpackage的調用方式

inf none 普通 bfd 是否 open usr -a pack                      Python中包(package)的調用方式                                           作者:尹正傑 版權聲明:原創

統計學的協方差矩陣陣列訊號基礎

在處理陣列訊號的時候,為了獲得空間訊號維度的相關性,以估計目標的資訊。故使用協方差矩陣能夠獲得這些,因為協方差矩陣是每一維度下(也就是陣元)訊號的相關性。當兩個維度相關時,訊號的協方差也是最大的。   一、統計學的基本概念   統計學裡最基本的概念就是樣本的均值、

python星號*的用法

這裡不說乘法,大家都知道 先看幾個測試語句: import numpy as np a=np.random.rand(2) print(a) print(*a) 輸出結果: [0.95721482 0.55708755] 0.9572148191916312 0.5570875

說說在 Vue.js 如何繫結樣式class style

在資料繫結中,最常見就是動態繫結元素的 class 或內聯樣式 style 咯,它們也是 HTML 的屬性,所以可以使用 v-bind 指令 。 1 繫結 class 1.1 物件語法 使用 v-bind:class 屬性,實現動態切換 class。 html:

python zip*iterables函式的使用

1.zip()函式的定義 從引數中的多個迭代器取元素組合一個新的迭代器 返回:一個zip物件,其內部元素為元組,可以轉化為列表或者元組 傳入引數:元組、列表、字典等迭代器 2.zip()函式的使用 僅僅有一個引數時,從迭代器中依次取一個元組,組成元組。>>

python字串str的操作

s = 'hello' # 字串的重疊 s = 'hello' * 2 # 字串的拼接 s = 'hello' + 'world' print(s) # 統計字元個數 print(len(s)) # 提取單個字元,通過下表提取 # 從開頭提取,下表從0開始 print(s[

python反射__import__和getattr使用

反射: 1、可通過字串的形式匯入模組   1.1、單層匯入  __import__('模組名') View Code  

pythonmap函式使用,資料型別轉換

python中map()函式進行資料轉換 用法: map(function, iterable, …), 返回的是map型,(ps:python2中返回的是list型可以直接顯示,但在python3中是map型無法直接顯示) 引數function: 傳的是一

javaListArray陣列求交集、並集、差集, 泛型工具類

業務需要求不同型別的交集、並集、差集為避免程式碼冗餘編寫工具類。 注:list 轉陣列需傳入陣列,如果將原陣列傳入將會改變原陣列的值,同時泛型陣列又不可以例項化,解決方案:Arrays.copyOf(n,list.size())  ,使用copyOf功能,開闢返回集合的等長新陣列,避免修改原陣列。

pythonitems和iteritems的區別

items()函式,將一個字典以dict_items的形式返回,因為字典是無序的,所以返回的列表也是無序的: 1 a ={'a':1,'b':2,'c':3,'d':4} 2 print(a.items()) 3 》dict_items([('a', 1), ('b', 2), ('c', 3), (

pythonscatter函式用法,matplotlib畫圖

scatter函式用於繪製散點圖。 scatter函式原型 matplotlib.pyplot.scatter(x,y,s=20,c='b',maker='o',cmpa=None,norm=None,vmin=None,vax=None,alpha=None,linewi

Pythonbytearray函式的初識

簡單寫一下今天題目裡看到的知識: 關於Python的內建函式bytearray()。 今天做著LeetCode裡的小題目,發現了這個函式,當然這是大神寫的,自己寫的速度知識處於中等。題目大致如下: M

Python練習題4列表去重:[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表重複內容 方法一:使用set 方法二:不使用set,自己寫方法

方法一:利用集合去重 1 list1 = [5,3,4,'ok',4,3,'abc',8,52,'ok'] 2 list1=list(set(list1)) 3 print(list1) 方法二:此方法略微冗餘,先判斷元素是否重複,再將重複元素提取並儲存到新列表中,再for 新建的列表元素,刪除