[英]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.