簡體   English   中英

有沒有其他方法可以在Python中管理n維數組/矩陣/列表的值分配?

[英]Are there alternative way to manage value assignment of n-dim array/matrix/list in Python?

在python中,我們做這樣的事情,例如:

n = 30
A = numpy.zeros(shape=(n,n))

for i in range(0, n):
    for j in range(0, n):
        A[i, j] = i+j 
        #i+j just example of assignment

管理2維數組。 很簡單 只需使用嵌套循環在行和列中走動即可。

但是我的朋友告訴我為什么這么復雜。 您能給我另一種管理方式嗎?

他告訴我在Mathematica中可以更輕松地管理n維數組(我不確定。我從來沒有使用過Mathematica)

您能給我另一種方法來管理n維矩陣/數組(在Numpy中)或列表(在Python中是普通的)上的值分配嗎?

您正在尋找numpy.fromfunction

>>> numpy.fromfunction(lambda x, y: x + y, (5, 5))
array([[ 0.,  1.,  2.,  3.,  4.],
       [ 1.,  2.,  3.,  4.,  5.],
       [ 2.,  3.,  4.,  5.,  6.],
       [ 3.,  4.,  5.,  6.,  7.],
       [ 4.,  5.,  6.,  7.,  8.]])

您可以使用operator稍微簡化一下:

>>> from operator import add
>>> numpy.fromfunction(add, (5, 5))
array([[ 0.,  1.,  2.,  3.,  4.],
       [ 1.,  2.,  3.,  4.,  5.],
       [ 2.,  3.,  4.,  5.,  6.],
       [ 3.,  4.,  5.,  6.,  7.],
       [ 4.,  5.,  6.,  7.,  8.]])

您可以對矩陣和向量使用數學規則:

n = 30
w = numpy.arange(n).reshape(1,-1)
A = w+w.T

暫無
暫無

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

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