为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

www说 2022-12-27 17:14:05
我想知道如何为 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)  但这似乎是错误的?
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

你得到一维数组作为结果,因为你有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]]


查看完整回答
反对 回复 2022-12-27
?
烙印99

TA贡献1829条经验 获得超13个赞

指数迭代

你需要有一个内部列表来获取内部结果,并使用 访问好的值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]]


查看完整回答
反对 回复 2022-12-27
  • 2 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号