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

时间:2020-06-04 20:44:38

标签: python arrays multidimensional-array

我想知道如何向NXN多维数组的每个元素添加值。我尝试了[multiarray中x的x + 1],但此仅对一维数组产生。

也许是这样的:

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)  

但这似乎是错误的?

2 个答案:

答案 0 :(得分:1)

由于得到addingArray作为简单列表,因此得到一维数组。因此,您对multiArray中的所有元素进行迭代,并将其添加1,然后将结果追加到列表中。


出于效率的考虑,建议对数组使用NumPy。然后,您可以简单地使用广播向数组的每个元素添加值。下面是一个说明:

# input array
In [180]: multiArray = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 

# add 1 to each value of the array
In [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]]

答案 1 :(得分:0)

指标迭代

您需要一个内部列表来获取内部结果,并使用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]]