Numpy:功能分配?

Numpy:功能分配?,numpy,Numpy,假设我想创建一个数组b,它是数组a的一个版本,第I行设置为零 目前,我必须做: b = a.copy() b[i, :] = 0 这有点烦人,因为在lambdas中无法做到这一点,而numpy中的其他一切都是功能性的。我想要一个类似theano的函数,你可以去那里 b = a.set_subtensor((i, slice(None)), 0) 或 据我所知,在努比没有这样的事。还是有 编辑 答案似乎是否定的,没有这样的函数,你需要自己定义一个。请参阅hpaulj的回答。您是指这样一个简单的

假设我想创建一个数组
b
,它是数组
a
的一个版本,第
I
行设置为零

目前,我必须做:

b = a.copy()
b[i, :] = 0
这有点烦人,因为在lambdas中无法做到这一点,而numpy中的其他一切都是功能性的。我想要一个类似theano的函数,你可以去那里

b = a.set_subtensor((i, slice(None)), 0)

据我所知,在努比没有这样的事。还是有

编辑


答案似乎是否定的,没有这样的函数,你需要自己定义一个。请参阅hpaulj的回答。

您是指这样一个简单的函数:

def subtensor(a, ind, val):
    b=a.copy()
    b[ind] = val
    return b

In [192]: a=np.arange(12).reshape(3,4)

In [194]: subtensor(a,(1,slice(None)),0)
Out[194]: 
array([[ 0,  1,  2,  3],
       [ 0,  0,  0,  0],
       [ 8,  9, 10, 11]])
索引采用类似于
(1,切片(无))
的元组

有一些可选的赋值函数,如
put
place
copyto
,但没有一个类似于执行此任务

这些是等效的:

b[0,:] = 1
b.__setitem__((0,slice(None)),1)
也就是说,Python解释器将
[]
语法转换为方法调用

这是一个就地操作。我不知道有什么东西是先复制的


这样的函数选择
where
返回副本,但它们(通常)使用布尔掩码,而不是索引元组。

您是指这样一个简单的函数:

def subtensor(a, ind, val):
    b=a.copy()
    b[ind] = val
    return b

In [192]: a=np.arange(12).reshape(3,4)

In [194]: subtensor(a,(1,slice(None)),0)
Out[194]: 
array([[ 0,  1,  2,  3],
       [ 0,  0,  0,  0],
       [ 8,  9, 10, 11]])
索引采用类似于
(1,切片(无))
的元组

有一些可选的赋值函数,如
put
place
copyto
,但没有一个类似于执行此任务

这些是等效的:

b[0,:] = 1
b.__setitem__((0,slice(None)),1)
也就是说,Python解释器将
[]
语法转换为方法调用

这是一个就地操作。我不知道有什么东西是先复制的


这样的函数选择
where
返回副本,但它们(通常)使用布尔掩码,而不是索引元组。

你能给出一个更完整的例子来说明你想要实现什么吗?也请参考此问题。该问题中有类似的词,但与其他问题有关。您可以使用
操作符.setitem
操作符.setitem(b,(i,slice(None)),0)或b
您能给出一个更完整的示例,说明您试图实现的目标吗?也请参考此问题。该问题中有相似的词,但有不同之处。您可以使用
操作符.setitem
操作符.setitem(b,(i,slice(None)),0)或b