Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在更改Numpy数组子类中的“\uuuu getitem”和“\uuuu setitem”的行为_Python_Arrays_Numpy_Getter Setter - Fatal编程技术网

Python 正在更改Numpy数组子类中的“\uuuu getitem”和“\uuuu setitem”的行为

Python 正在更改Numpy数组子类中的“\uuuu getitem”和“\uuuu setitem”的行为,python,arrays,numpy,getter-setter,Python,Arrays,Numpy,Getter Setter,,但我想修改\uuuu getitem\uuuuuuuu和\uuuuuuu setitem\uuuuuuuuuuu的行为,以便它们可以接受一个日期时间范围,同时保留最大数量的内置机制,如操作、cumsum等。这可以通过\uuuuuu数组\uuuuuuuuunc实现吗 似乎在其中,该方法被重写 这可以用来修改numpy数组的get/set行为吗?在其他情况下,您可以实现\uuu getitem\uuuu和\uuuuu setitem\uuuuu来处理您的特定情况(使用datetime对象),并将其

,但我想修改
\uuuu getitem\uuuuuuuu
\uuuuuuu setitem\uuuuuuuuuuu
的行为,以便它们可以接受一个日期时间范围,同时保留最大数量的内置机制,如操作、cumsum等。这可以通过
\uuuuuu数组\uuuuuuuuunc
实现吗

似乎在其中,该方法被重写


这可以用来修改numpy数组的get/set行为吗?

在其他情况下,您可以实现
\uuu getitem\uuuu
\uuuuu setitem\uuuuu
来处理您的特定情况(使用datetime对象),并将其分派到
super()。这样,
ndarray
的剩余功能将保持不变。例如:

from datetime import date
import numpy as np

class A(np.ndarray):
    def __array_finalize__(self, obj):
        if obj is not None:
            obj.start_date = date.today()

    def __getitem__(self, item):
        if isinstance(item, slice) and isinstance(item.start, date) and isinstance(item.stop, date):
            return super().__getitem__(slice((item.start - self.start_date).days,
                                             (item.stop - self.start_date).days,
                                             item.step))
        return super().__getitem__(item)

a = A((10,), buffer=np.arange(10), dtype=int)
print(a[1:8])
print(a[date(2019, 1, 22):date(2019, 1, 29):2])
print(np.cumsum(a))
print(np.add.outer(a, a))
哪些产出:

[1 2 3 4 5 6 7]
[1 3 5 7]
[ 0  1  3  6 10 15 21 28 36 45]
[[ 0  1  2  3  4  5  6  7  8  9]
 [ 1  2  3  4  5  6  7  8  9 10]
 [ 2  3  4  5  6  7  8  9 10 11]
 [ 3  4  5  6  7  8  9 10 11 12]
 [ 4  5  6  7  8  9 10 11 12 13]
 [ 5  6  7  8  9 10 11 12 13 14]
 [ 6  7  8  9 10 11 12 13 14 15]
 [ 7  8  9 10 11 12 13 14 15 16]
 [ 8  9 10 11 12 13 14 15 16 17]
 [ 9 10 11 12 13 14 15 16 17 18]]

好吧,你应该准确地实现
\uuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,如果你想覆盖它们的
。@我的一。只需覆盖
\uuuu getitem\uuuuuuuuuu
\uuuuuuuu setitem\uuuuuuuuuuu
就可以了吗?广播可以被覆盖吗?我希望能够一起广播不同大小的阵列,这样一个分辨率较低的时间序列就可以通过插值进行上采样,然后广播。