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