我有以下 numpy 陣列
u = np.array([a1,b1,a2,b2...,an,bn])
我想從彼此減去 a 和 b 元素并最終得到一個 numpy 陣列:
u_result = np.array([(a2-a1),(b2-b1),(a3-a2),(b3-b2),....,(an-a_(n-1)),(an-a_(n-1))])
如何在沒有太多陣列拆分和for 回圈的情況下執行此操作?我在一個更大的回圈中使用它,所以理想情況下,我想有效地做到這一點(并學習新的東西)
(我希望結果陣列的索引是明確的)
uj5u.com熱心網友回復:
或者簡單地,執行減法:
u = np.array([3, 2, 5, 3, 7, 8, 12, 28])
u[2:] - u[:-2]
輸出:
array([ 2, 1, 2, 5, 5, 20])
uj5u.com熱心網友回復:
您可以使用 ravel torearrange 作為原始向量。
簡答:
u_r = np.ravel([np.diff(u[::2]),
np.diff(u[1::2])], 'F')
這里有一個更長更詳細的解釋:
- 分離
a從b在u此,可以實作索引 - 區分
a,b您可以使用 np.diff 來簡化代碼。 - 再次闡明差異化的價值觀。
#------- Create u---------------
import numpy as np
a_aux = np.array([50,49,47,43,39,34,28])
b_aux = np.array([1,2,3,4,5,6,7])
u = np.ravel([a_aux,b_aux],'F')
print(u)
#-------------------------------
#1)
# get a as elements with index 0, 2, 4 ....
a = u[::2]
b = u[1::2] #get b as 1,3,5,....
#2)
#differentiate
ad = np.diff(a)
bd = np.diff(b)
#3)
#ravel putting one of everyone
u_result = np.ravel([ad,bd],'F')
print(u_result)
uj5u.com熱心網友回復:
你可以試試這個方法。首先,a and b使用array[::2], array[1::2]. 最后,從 中減去b to a (np.array(array[1::2] - array[::2]))。
import numpy as np
array = np.array([7,8,9,6,5,2])
u_result = np.array(array[1::2] - array[::2] )
print(u_result)
uj5u.com熱心網友回復:
看起來你需要使用np.roll:
shift = 2
u = np.array([1, 11, 2, 12, 3, 13, 4, 14])
shifted_u = np.roll(u, -shift)
(shifted_u - u)[:-shift]
回傳:
array([1, 1, 1, 1, 1, 1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377967.html
上一篇:如何使用jq連接兄弟陣列?
