我有一個只能包含 1 、 -1 或 0 的簡單向量。它表示粒子的方向。例如array([1, 0])或者array([-1, 1])
我想對角添加成分如果都沒有。
我目前的功能是:
def addcomp1(vec: array):
arr = np.empty(2, dtype=int)
for i, el in enumerate((i if i else 1 for i in vec)):
arr[i] = el
return arr
這使得任何向北走的直線向量都向西北走。或者任何往西走,往西北走。我想我可以使功能更快。我的提示。我總共只使用 4 個輸入和 3 個輸出。我只使用 1s、-1s 和 0s。我會 lru_cache 該函式,但 np.arrays 不可哈希。有任何想法嗎?只需使用將 (1, 0) 連接到 (1, 1) 的字典?我必須讓它們成為可散列的......
uj5u.com熱心網友回復:
如果我理解正確,請使用:
import numpy as np
def addcomp1(vec: np.array):
return np.where(vec == 0, 1, vec)
print(addcomp1(np.array([1, 1])))
print(addcomp1(np.array([0, 1])))
print(addcomp1(np.array([-1, 0])))
輸出
[1 1]
[1 1]
[-1 1]
uj5u.com熱心網友回復:
我不知道這會有多快,我也不知道這是否正是您正在尋找的答案型別,不過,我提到了以下簡單的一行:
arr = [(lambda x: 1 if not x else x)(s) for s in vec]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329058.html
