是否可以编辑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
答案 0 :(得分:0)
这样做:
def setret(arr, idx, val):
arr[idx] = val
return arr
现在您可以编写所需的简洁/混乱代码:
[setret(np.zeros((20, 1)), i, 1) for i in range(5)]