![](/img/trans.png)
[英]Most efficient way to operate on a n-dim array based on a reference n-dim array
[英]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.