我有一个数组
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]]
答案 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]