我想知道如何向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)
但这似乎是错误的?
答案 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]]