从python中的数组中的每个元素中减去

时间:2017-02-05 23:06:36

标签: arrays python-2.7

我在python中有一个数组,我想在所有数组中从每个int中减去一个数组。例如:

arr = [[2,3,4],
      [5,6,7],
      [8,9,10]]
 #this should become this:
arr = [[1,2,3],
      [4,5,6],
      [7,8,9]]

我尝试过这样做的几种方式

for i in arr:
    for j in i:
        j-=1     #doesn't work!

我知道使用numpy这样做会更容易,但这适用于我正在进行的大型项目,因此实施numpy需要数小时,如果不是更多的话。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用嵌套列表理解:

arr = [[y - 1 for y in x] for x in arr]

答案 1 :(得分:1)

所以你这样做的方法就是将循环中的变量j重新分配给原始值减去一个。但是,您要做的是将索引j处的数组值重新分配给原始值减去1。要在不使用numpy的情况下执行此操作,只需遍历数组的所有索引,然后替换值:

for i in range(len(arr)):
   for j in range(len(arr[i])):
      arr[i][j] -= 1

如果您不确定这是为什么,请查看变量赋值在Python中的工作原理。

答案 2 :(得分:0)

您的解决方案不起作用,因为j是数组中值的副本,而不是指向数组项本身的指针。

以下是有效的示例代码。实质上,遍历数组中的每个位置,并修改该位置的原始数组。

arr = [[2,3,4],
      [5,6,7],
      [8,9,10]]
for x_idx, x in enumerate(arr):
    for y_idx, y in enumerate(x):
        arr[x_idx][y_idx] -= 1
print(arr)