我通過每十個值來縮小一個 NumPy 陣列,如下所示:
b = a[::10]
然后我計算一個用于選擇陣列部分的掩碼:
derivative = np.diff(b, axis=0)
mask = (np.linalg.norm(derivative[:, :], axis=1) > 0.01)
并且為了能夠在原始資料上使用掩碼a,我需要在所有 True 值之間插入九個 True 值,mask并在現有值之間插入九個額外的 False 值。然后我希望能夠a像這樣選擇相關資料:
c = a[mask, :]
這將是一些示例代碼來展示它應該如何作業:
import numpy as np
a = np.arange(0, 10)
# a: [0 1 2 3 4 5 6 7 8 9]
b = a[::3]
# b: [0 3 6 9]
mask = (b > 5)
# mask: [False False True True]
# here the mask needs to be padded with appropriate True and False
mask_padded = np.array([False, False, False, False, False, False, True, True, True, True])
c = a[mask_padded]
print(c)
# prints [6 7 8 9]
我怎樣才能有效地和大致正確地做到這一點?
uj5u.com熱心網友回復:
也許像這樣?
它在掩碼中尋找相鄰的真值,然后在它們之間填充真值,形成一個與原始陣列大小相同的輸出陣列。
import numpy as np
a = np.arange(0, 10)
print (a)
step = 3
b = a[::step]
print (b)
threshold = 5
mask = (b > threshold)
print (mask)
adjacent_true = np.asarray([[i, i 1] for i in range(mask.size-1) if np.array([mask[i], mask[i 1]]).all()])
print (adjacent_true)
ix = np.arange(a.size)[::step]
print (ix)
output = np.zeros(a.size)
for (i, j) in adjacent_true:
output[ix[i]: ix[j] 1] = 1
output = output.astype(bool)
print ("Output: ")
print (a[output])
uj5u.com熱心網友回復:
我不確定這有多有效,請指教:
import numpy as np
a = np.arange(0, 10)
# a: [0 1 2 3 4 5 6 7 8 9]
step = 3
b = a[::step]
print("b: {}".format(b))
# b: [0 3 6 9]
threashold = 5
mask = (b > threashold)
print("mask: {}".format(mask))
# mask: [False False True True]
mask_padded = np.tile(mask, (step,1)).T.reshape(1,-1)[0, :a.shape[0]]
print("mask_padded:{}".format(mask_padded))
# mask_padded = np.array([False, False, False, False, False, False, True, True, True, True])
c = a[mask_padded]
print("output:{}".format(c))
# prints [6 7 8 9]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372119.html
標籤:麻木的
上一篇:矩陣乘法和solve_ivp
