为多维数组的每个元素添加值

我想知道如何为 NXN 多维数组的每个元素添加一个值。我试过 [x+1 for x in multiArray],但这个只对一维数组产生。


也许是这样的:


multiArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]


addingArray=[]

for i in range(3):

    for j in range(3):

        addingArray.append(multiArray[j]+1) #(adding 1 to each element here)  

但这似乎是错误的?


www说
浏览 177回答 2
2回答

慕哥6287543

你得到一维数组作为结果,因为你有addingArray一个简单的列表。因此,您遍历了您的所有元素multiArray并向其添加 1,然后将结果附加到列表中。出于效率原因,建议对数组使用 NumPy。然后,您可以简单地使用广播为数组的每个元素添加值。下面是一个例子:# input arrayIn [180]: multiArray = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # add 1 to each value of the arrayIn [181]: multiArray + 1  Out[181]: array([[ 2,  3,  4],       [ 5,  6,  7],       [ 8,  9, 10]])如果出于某些原因你确实想要一个普通的 python 列表作为结果,你可以简单地将它转换为一个:In [182]: (multiArray + 1).tolist()  Out[182]: [[2, 3, 4], [5, 6, 7], [8, 9, 10]]

烙印99

指数迭代你需要有一个内部列表来获取内部结果,并使用 访问好的值multiArray[i][j],也不要使用常量3习惯使用对象长度addingArray=[]for i in range(len(multiArray)):    innerArray = []    for j in range(len(multiArray[i])):        innerArray.append(multiArray[i][j]+1)    addingArray.append(innerArray)  print(addingArray) # [[2, 3, 4], [5, 6, 7], [8, 9, 10]]值迭代您也可以直接遍历 arra 以简化并且不要同时使用索引addingArray=[]for inner in multiArray:    innerArray = []    for value in inner:        innerArray.append(value+1)    addingArray.append(innerArray)  列表理解并用列表理解语法缩短它multiArray = [[v+1 for v in inner] for inner in multiArray]print(multiArray) # [[2, 3, 4], [5, 6, 7], [8, 9, 10]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python