【发布时间】:2014-12-01 02:11:37
【问题描述】:
我正在将一些代码从 R 移植到 python(注意:在 R 列表中,从第一个元素开始,而不是第 0 个元素),而不是更改我访问数组的每个地方,我想创建一个 numpy.array 的子类,所以比如下面的代码
import numpy
class array_starting_at_one(numpy.array):
???
def myfunc(A):
print A[1,1,1]
print A[1:3,1,:]
A = array_starting_at_one([[[1, 2, 3], [4, 5, 6]], [[11, 12, 13], [14, 15, 16]]])
myfunc(A)
输出
1
[[ 1 2 3]
[11 12 13]]
谁知道怎么填???在上面的代码中?
【问题讨论】:
-
您可以在您的子类中覆盖
__getitem__ -
您可能可以这样做,但我建议您不要这样做。 1)它可能会涉及比您想要的更多的视图投射。 2)从长远来看,这可能比仅仅在你的脑海中保持两种语言的索引约定更令人困惑——特别是如果你计划与经常使用 numpy 的其他人一起工作。 (注意,我来自 Fortran 背景,索引也从 1 开始,并且在很短的时间之后,差异没什么大不了的......)
-
P.S.我知道 R 将 1:3 解释为 [1,2,3] 而不是 [1,2] (就像 python 所做的那样),但我有点愚蠢地向前冲,已经以艰苦的方式转换了所有这些范围。
标签: python arrays python-2.7 numpy