在此代碼段中:
triangles = np.float32([[[0, -2], [-2, 3], [1, 1]], [[0, -1], [-1, 3], [1, 1]]])
centers = np.average(triangles, axis=1)
samples = np.float32([t-centers[i] for i, t in enumerate(triangles)])
我想表達samples為陣列廣播減法,即類似于 的東西triangles-centers,由于以下原因不起作用:
ValueError: operands could not be broadcast together with shapes (2,3,2) (2,2)
samples有沒有比串列理解更簡單的定義方法?
uj5u.com熱心網友回復:
使用numpy.meanwithkeepdims=True在您取平均值的軸上保持長度為 1 的維度:
samples = triangles - np.mean(triangles, axis=1, keepdims=True)
uj5u.com熱心網友回復:
我相信這可以滿足您的要求。只需重塑中心以匹配行大小。
samples = triangles - centers.reshape(triangles.shape[0],-1,triangles.shape[2])
uj5u.com熱心網友回復:
受到@Tim Roberts 上述回答的啟發:
triangles = np.float32([[[0, -2], [-2, 3], [1, 1]], [[0, -1], [-1, 3], [1, 1]]])
centers = np.average(triangles, axis=1)
samples = triangles-centers[:, None, :]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471417.html
