# ravel 和 flatten 的区别
np.ravel 返回原数组的一个 view,而 flatten 返回一个副本
# T 转置的内存规则
对于一个 ndarray 数组 A,A.T 是一个新的对象,即 id (A) 和 id (A.T) 不相等
但是二者共享底层的数据存储
# 数组顺序
- K:内存顺序
- C:行顺序
- F:列顺序
# metaclass 元类
创建普通类的 “创世神”,普通类是元类的一个 instance
记住 super ().__new__的参数需要 cls,super ().__init__则无需显式传入 self
自定义元类 mymeta 继承 type
class mything (base,metaclass=mymeta),其中 mymeta 是我们自己定义的元类
# 切片
切片获得原数组的 view,修改反馈到原数组
0 维数组使用 [...] 来切片
...
即许多个 :
# 自定义 np.ndarray 类
先 new,new 中有 view (cls) 所以会调用 finalize,最后创建好后会 init
一般不写 init,直接在 new 中 np.asarray,view,属性赋值
当进行切片 or 创建视图时,会调用__array_finalize__方法
finalize 中,obj 是原数组,self 是新视图