在一個維度中,“網格”將是一個介于 0 和 100 之間的數字陣列。在二維中,網格將是一個點陣列,如 [0, 0] [0, 1] [0, 2]... [1,0], [1, 1] ... [99, 99]。在三個維度和更多維度中,它看起來很相似。
我目前的輸出是這樣的:

它不會為第 n - 1 列中的每個值創建每個值組合。
我使用的代碼是:
import numpy as np
class Cube:
side_len = 100
def __init__(self, n):
current_point = np.zeros(n)
self.arr = []
for i in range(n):
for j in range(Cube.side_len):
self.arr.append(current_point.copy())
current_point[i] = 1.0
self.arr.append([Cube.side_len for _ in range(n)])
self.arr = np.array(self.arr)
np.random.shuffle(self.arr)
if __name__ == '__main__':
cube(10)
我也嘗試過使用meshgrid,但我無法理解檔案。我希望它是一個淺薄的點串列,但我得到 X,Y,但我不明白我應該用它做什么?
uj5u.com熱心網友回復:
這是你的做法。具有 3 個維度的 Meshgrid 回傳一個包含三個事物的串列,它們是 3 個軸的值,以獲得點的均勻分布。然后,您可以使用vstack將它們堆疊在一起,并轉置以獲得 3D 坐標串列:
>>> import numpy as np
>>> a = np.linspace(0,100,101)
>>> x = np.meshgrid( a, a, a )
>>> y = np.vstack(list(map(np.ravel,x))).T
>>> y
array([[ 0., 0., 0.],
[ 0., 0., 1.],
[ 0., 0., 2.],
...,
[100., 100., 98.],
[100., 100., 99.],
[100., 100., 100.]])
>>>
歸功于這篇文章: 如何將網格網格的輸出轉換為相應的點陣列?
請記住,網格的大小是一個軸的立方,因此它們很快就會變大。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453068.html
