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

2024-04-19 21:53:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组

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]] 

我想创建另一个数组,把一半的条目设为零

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]]

Tags: 条目数组
3条回答

您可以尝试以下方法:

One line solution:

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]]

Detailed solution:

以上列表理解如下:

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

print(A)

使用列表理解

[[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]]

使用numpy

import numpy as np
a = np.array([[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[:, a.shape[1]//2:] = 0
print(a)

给予

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]])

要转换回python列表,请使用a.tolist()

相关问题 更多 >