numpy内联编辑元素

时间:2018-02-01 13:02:37

标签: python python-3.x numpy

是否可以编辑numpy数组的一个元素,然后在一个语句中返回该数组?

例如,如果我想这样做(我知道这个可以以其他更有效和更合适的方式完成,但这只是一个例子):

arr = []
for x in range(5):
    a = np.zeros((5, 1))
    a[x, 0] += 1
    arr.append(a)

在一行中,我会使用列表理解,但a.itemset(0, 1)a[0, 0] += 1都不会返回a

由于np.ndarray.itemset()没有返回任何内容,listcomp无效:

arr = [np.zeros((20, 1)).itemset(i, 1.) for i in range(5)]

除了listcomp之外,这在许多应用程序中都很有用,因为它会使一些代码更具可读性和直接性。

谢谢你的时间, JAG

1 个答案:

答案 0 :(得分:0)

这样做:

def setret(arr, idx, val):
    arr[idx] = val
    return arr

现在您可以编写所需的简洁/混乱代码:

[setret(np.zeros((20, 1)), i, 1) for i in range(5)]