作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 numpy 中,许多对象的构造函数接受一个“array_like”作为第一个参数。是否有这样的对象的定义,作为抽象元类,或者方法的文档应该包含??
最佳答案
事实证明,从技术上讲,几乎任何东西都是类似数组的。 “类数组”更多的是说明如何解释输入,而不是限制输入的内容;如果参数被记录为类数组,NumPy 将尝试将其解释为数组。
除了the nearly tautological one 之外没有类似数组的正式定义。 -- 类数组是 np.array
可以转换为 ndarray
的任何 Python 对象。要超越这个,你需要研究 source code .
NPY_NO_EXPORT PyObject *
PyArray_FromAny(PyObject *op, PyArray_Descr *newtype, int min_depth,
int max_depth, int flags, PyObject *context)
{
/*
* This is the main code to make a NumPy array from a Python
* Object. It is called from many different places.
*/
PyArrayObject *arr = NULL, *ret;
PyArray_Descr *dtype = NULL;
int ndim = 0;
npy_intp dims[NPY_MAXDIMS];
/* Get either the array or its parameters if it isn't an array */
if (PyArray_GetArrayParamsFromObject(op, newtype,
0, &dtype,
&ndim, dims, &arr, context) < 0) {
Py_XDECREF(newtype);
return NULL;
}
...
特别有趣的是PyArray_GetArrayParamsFromObject
,其注释列举了 np.array
期望的对象类型:
NPY_NO_EXPORT int
PyArray_GetArrayParamsFromObject(PyObject *op,
PyArray_Descr *requested_dtype,
npy_bool writeable,
PyArray_Descr **out_dtype,
int *out_ndim, npy_intp *out_dims,
PyArrayObject **out_arr, PyObject *context)
{
PyObject *tmp;
/* If op is an array */
/* If op is a NumPy scalar */
/* If op is a Python scalar */
/* If op supports the PEP 3118 buffer interface */
/* If op supports the __array_struct__ or __array_interface__ interface */
/*
* If op supplies the __array__ function.
* The documentation says this should produce a copy, so
* we skip this method if writeable is true, because the intent
* of writeable is to modify the operand.
* XXX: If the implementation is wrong, and/or if actual
* usage requires this behave differently,
* this should be changed!
*/
/* Try to treat op as a list of lists */
/* Anything can be viewed as an object, unless it needs to be writeable */
}
所以通过研究源代码我们可以得出类数组是
__array_struct__
or __array_interface__
interface 的对象, 或__array__
function 的任何对象, 或object
dtype 的 0 维数组。关于python - numpy: "array_like"对象的正式定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46650537/
我正在使用bootstrap templates与 angular-formly我想将 addonsLeft.text 绑定(bind)到模型,以便一旦选择选项发生更改,它就会动态更改。 这是输入的样
我正在尝试以 mm/dd/yyyy 格式向我的列添加一天,但它为我提供了 newdate 的空输出 日期1 = 27/03/2019 SELECT date1,DATE_ADD(CONCAT(date
我是一名优秀的程序员,十分优秀!