Numpy原地與非原地操作

2021-09-22 22:52:13 字數 797 閱讀 2992

+=:原地操作

給陣列分配了一塊兒地,對它進行操作,就是在已有的地上進行翻新播種,任何改變都在原地進行

+:非原地操作

給陣列重新開闢了一塊兒地,對它進行操作,不會影響原來的值

import numpy as np

a=np.array([1,2,3])

b=aa+=np.array([1,1,1])#原地操作,在原有的操作空間中進行改變

print (a) #a也改變了

print (b) #b也改變了

c=np.array([1,2,3])

d=cc=c+np.array([1,1,1])#非原地操作,操作會另外開啟操作空間

print (c)#c已經重新指向了新的地方

print (d)#d依然指向原來分配給c的空間

[2 3 4]

[2 3 4]

[2 3 4]

[1 2 3]

import numpy as np

a=np.array([1,2,3,4])

b=a[:2]#a中的1、2個元素切片賦給b變數

b[0]=10 #b中第乙個元素改為10

print (a)#切片操作會影響原始的值,原地操作,列表不會進行原地操作,這樣numpy對一維陣列的操作比列表效率高

print (b)

[10  2  3  4]

[10 2]

原地歸併與非原地歸併

看演算法時看到原地歸併和非原地歸併,不是很懂兩者的區別,故記錄如下 原地演算法 in place algorithm 基本上不需要額外輔助的資料結構,然而,允許少量額外的輔助變數來轉換資料的演算法。當演算法執行時,輸入的資料通常會被要輸出的部分覆蓋掉。wiki 那麼我們來看下兩種演算法的 非原地cl...

原地排序與鍊錶翻轉

有這樣乙個問題 有個長度為 n 的 key,val 陣列 a,其中 key 是 int 型別,並且其值在 0,n 之間 前閉後開,包括 0 不包括 n 該陣列按 key 是亂序的,但沒有重複 key。要求 對 a 原地按 key 排序,可以使用常數個臨時變數,不允許使用其它額外空間,時間複雜度必須是...

非原地操作 114 二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為乙個單鏈表。例如,給定二叉樹 1 2 5 3 4 6 將其展開為 1 2 3 4 5 6將乙個二叉樹給它拆開,拆成鍊錶。其實這個題目要求是原地操作,也就是時間複雜度是o 1 但是原地操作我沒看明白,所以用了乙個o n 的方法去解決這個問題。可以進行先序的遍歷操作,然後把...