假設我有以下 NumPy 陣列:
import numpy as np
arr = np.array([['a', -1, -1, -1],
[ -1,'b','c', -1],
['e', -1,'d','f']], dtype=object)
現在,如果一行中有多個非減一元素,我想找到每一行的相鄰元素的列索引距離。
例如,對于 ('b', 'c') 對,'c' 在第三列,'b' 在第二列,列差為 2('c' 的列索引) - 1 = 1。
對于 ('e','d'),距離將為 2 - 0 = 2。對于 ('d','f'),距離將為 1。對于 ('e','f'),有在它們之間是'd',所以我們不考慮它。
uj5u.com熱心網友回復:
我認為這可以滿足您的要求:
[np.diff(np.where(row!=-1)).flatten() for row in arr]
結果:
[array([], dtype=int64), array([1]), array([2, 1])]
我想不出一種矢量化它的方法(即避免回圈);這是一種奇怪的資料結構(NumPy 陣列包含單一型別的元素,因此取決于您想要做什么,您可能會發現objectUnicode 更適合)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490676.html
上一篇:使用兩個屬性對陣列元素進行分組
