我有一個陣列A。我正在比較A[i 1]=A[i],但當前輸出是 0 和 1。相反,我希望它以< or = or >. 我提出了預期的輸出。
import numpy as np
A=np.array([np.array([[0.01609 , 0.01728839, 0.01635707],
[0.01696908, 0.01661592, 0.0163007 ],
[0.01609 , 0.01642818, 0.01950431]]),
np.array([[[0.01609 , 0.01728839, 0.01635707],
[0.01696908, 0.01661592, 0.0163007 ],
[0.01609 , 0.01642818, 0.01950431]]]),
np.array([[[0.01609 , 0.017286 , 0.01635698],
[0.01698125, 0.01659415, 0.01630078],
[0.01627952, 0.01639007, 0.01951677]]])], dtype=object)
for i in range(0,len(A)-1):
B=(A[i 1]==A[i]).astype(int)
print([B])
當前輸出為
[array([[[1, 1, 1],
[1, 1, 1],
[1, 1, 1]]])]
[array([[[1, 0, 0],
[0, 0, 0],
[0, 0, 0]]])]
預期的輸出是
[array([[=, =, =],
[=, =, =],
[=, =, =]]])]
[array([[[=, <, <],
[>, <, >],
[>, <, >]]])]
uj5u.com熱心網友回復:
您可以使用numpy 廣播和避免 for 回圈np.select:
mapping = {
"<": A[1:] < A[:-1],
"=": A[1:] == A[:-1],
">": A[1:] > A[:-1],
}
choicelist, condlist = zip(*mapping.items())
result = np.select(condlist, choicelist)
# equivalent to
# result = np.select(mapping.values(), mapping.keys())
>>> result
array([[['=', '=', '='],
['=', '=', '='],
['=', '=', '=']],
[['=', '<', '<'],
['>', '<', '>'],
['>', '<', '>']]], dtype='<U3')
uj5u.com熱心網友回復:
您可以使用np.select
for i in range(len(A)-1):
B = np.select([A[i 1]==A[i],A[i 1]>A[i],A[i 1]<A[i]], ["=",">","<"])
print([B])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497820.html
上一篇:拆分字串并連接串列中的值
下一篇:在numpy陣列中外推NaN值
