如何在Python中将数组条目设置为零

时间:2017-12-01 12:51:25

标签: python tensorflow

我有一个数组

A = [[1, 2, 4, 0, -2, 6], 
[3, 5, 4, 9, 10, -3], 
[4, 6, 0, -5, 11, 2], 
[0, -3, -4, 0, 12, 8]] 

我想通过将A个条目的一半设置为零来创建另一个数组,即

B =  [[1, 2, 4, 0, -0, 0], 
[3, 5, 4, 0, 0, 0], 
[4, 6, 0, 0, 0, 0], 
[0, -3, -4, 0, 0, 0]]

4 个答案:

答案 0 :(得分:1)

使用numpy

array([[ 1,  2,  4,  0,  0,  0],
       [ 3,  5,  4,  0,  0,  0],
       [ 4,  6,  0,  0,  0,  0],
       [ 0, -3, -4,  0,  0,  0]])

给出

a.tolist()

要转换回python列表,请使用{{1}}

答案 1 :(得分:0)

您可以尝试这样的事情:

  

一线解决方案:

A = [[1, 2, 4, 0, -2, 6],
[3, 5, 4, 9, 10, -3],
[4, 6, 0, -5, 11, 2],
[0, -3, -4, 0, 12, 8]]



[item.__setitem__(item.index(value), 0)for item in A for index,value in enumerate(item[len(item)//2:])]

print(A)

输出:

[[1, 2, 4, 0, 0, 0], [3, 5, 4, 0, 0, 0], [4, 6, 0, 0, 0, 0], [0, -3, -4, 0, 0, 0]]
  

详细解决方案:

以上列表理解与:

相同
for item in A:
    for index,value in enumerate(item[len(item)//2:]):
        item[item.index(value)]=0

print(A)

答案 2 :(得分:0)

使用列表理解

[[0 if i>=len(l)/2 else j for i,j in enumerate(l)] for l in A]

输出:

[[1, 2, 4, 0, 0, 0],
 [3, 5, 4, 0, 0, 0],
 [4, 6, 0, 0, 0, 0],
 [0, -3, -4, 0, 0, 0]]

答案 3 :(得分:0)

假设所有行长度相同的简单解决方案

c = len(a[0])
[row[:c/2] + [0] * (c/2) for row in a]