从这里的numpy数组的规范:
typedef struct PyArrayObject {
PyObject_HEAD
char *data;
int nd;
npy_intp *dimensions;
npy_intp *strides;
PyObject *base;
PyArray_Descr *descr;
int flags;
PyObject *weakreflist;
} PyArrayObject;
Run Code Online (Sandbox Code Playgroud)
当我查看numpy数组的规范时,我没有看到它存储数组的元素数量.那是真的吗?
不存储的优点是什么?
谢谢.
大小(即数组中元素的总数)计算为数组中值的乘积dimensions.该数组的长度是nd.
在实现numpy核心的C代码中,您会发现宏的许多用途PyArray_SIZE(obj).这是宏的定义:
#define PyArray_SIZE(m) PyArray_MultiplyList(PyArray_DIMS(m), PyArray_NDIM(m))
Run Code Online (Sandbox Code Playgroud)
不存储它的优点是不存储冗余数据.