如何在Python 3中进行切片修改(或操作符重载缺失)

2024-04-20 03:31:13 发布

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

在numpy中,可以对切片进行修改:

a = np.array([1, 2, 3, 4, 5])
a[2:4] = [7, 8]
# now a is np.array([1, 2, 7, 8, 5])

如何实施?在

假设您有一个2d数组类,Array2d,它有一些2d数组的复杂实现,比如二维trie。您希望__getitem__方法返回Array2dSlice对象,可以对其进行修改:

^{2}$

如果Python中有操作符重载,我会在Array2dSlice类中使用它。但不存在操作符过载的问题。有合适的替代品吗?在


Tags: 对象方法numpy替代品isnp切片数组
1条回答
网友
1楼 · 发布于 2024-04-20 03:31:13

如果索引运算符[]出现在赋值运算符=的左侧,则调用的特殊方法是__setitem__,而不是{}。在

在这种情况下,有效的调用是:

a.__setitem__(tuple(slice(1, 3), slice(1, 3)), [[0, 0], [0, 0]])

这就在一个地方提供了有效修改阵列所需的所有信息。在

相关问题 更多 >