簡體   English   中英

如何使用python中列出的元素制作矩陣

[英]How to make a matrix with elements that are lists in python

如何制作由列表元素組成的矩陣? 例如

t = np.zeros(((N+1),(N+1)))
for row in range (N+1):
    for column in range (N+1):
        position = [row,column]
        t[row,column] = position

但這會產生一個錯誤,提示“使用序列設置數組元素”。

我希望代碼創建類似

[[[0,0],[0,1],[0,2]],
 [[1,0],[1,1],[1,2]],
 [[2,0],[2,1],[2,2]]]

您的數據是3維的,因此您的數組缺少最后一個維:

t = np.zeros(((N+1),(N+1),2))
# for loops...

為什么不使用numpy.indices() 該任務的用途是:

t = numpy.indices((N+1, N+1))[::-1, :].T
# array([[[0, 0],
#         [0, 1],
#         [0, 2]],
# 
#        [[1, 0],
#         [1, 1],
#         [1, 2]],
# 
#        [[2, 0],
#         [2, 1],
#         [2, 2]]])

使用3D數據的優點應該立即清楚,因為您也可以輕松索引list維度。 例如只打印所有列表的第二個值

t[..., 0]
# array([[0, 0, 0],
#        [1, 1, 1],
#        [2, 2, 2]])

或繪制數據:

plt.figure()
plt.imshow(t[..., 0])  # plot first value of lists
plt.figure()
plt.imshow(t[..., 1])  # plot second value of lists
plt.show()

或任何其他處理數據的方法:

numpy.sum(t, axis=1)
# array([[0, 3],
#        [3, 3],
#        [6, 3]])

要么

t / numpy.max(t)
# array([[[ 0. ,  0. ],
#         [ 0. ,  0.5],
#         [ 0. ,  1. ]],
# 
#        [[ 0.5,  0. ],
#         [ 0.5,  0.5],
#         [ 0.5,  1. ]],
# 
#        [[ 1. ,  0. ],
#         [ 1. ,  0.5],
#         [ 1. ,  1. ]]])

如果您的數組是list的二維數組,那么您顯然無法做到這些。

您需要將ndarray中元素的dtype作為對象:

a = np.zeros([N+1, N+1], dtype=object)
a[0][0] = [1, 2, 3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM