我想在 Python 中創建以下零和一的序列:
{0, 1,1,1,1, 0,0, 1,1,1, 0,0,0, 1,1, 0,0,0,0, 1}
因此,首先有 1 個零和 4 個 1,然后是 2 個零和 3 個 1,然后是 3 個零和 2 個 1,最后是 4 個零和 1 個 1。最終陣列的維度應該是 20x1,但我的代碼給了我 4x2 的維度。有誰知道我該如何解決這個問題?
這是我的代碼:
import numpy as np
seq = [ (np.ones(n), np.zeros(5-n) ) for n in range(1,5)]
提前謝謝了!
uj5u.com熱心網友回復:
您可以使用flatten:
import numpy as np
l = np.array([[0] * n [1] * (5 - n) for n in range(1, 5)]).flatten()
print(l)
# >>> [0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1]
uj5u.com熱心網友回復:
對于每次迭代,您都會創建一個包含兩件事的元組,因此結果為 4x2。您可以通過將所有陣列元素連接在一起來將其變成您想要的形式,但是您的序列有一個模式;您可以利用它看起來像一個由 1 和 0 組成的三角矩陣,然后您可以將其展平。
n = 5
ones = np.ones((n, n), dtype=int)
seq = np.triu(ones)[1:].flatten()
輸出:
array([0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/338386.html
上一篇:在條件下用不同的陣列替換多維陣列(Python3.x)
下一篇:從3D陣列中的行中洗掉索引
