我想知道如何向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)
但是这似乎是错误的?
出于效率的考虑,建议对数组使用NumPy。然后,您可以简单地使用broadcasting向数组的每个元素添加值。下面是一个插图:
# 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]])
您需要一个内部列表来获取内部结果,并使用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]]