在numpy中,许多对象的构造函数都将“ array_like”作为第一个参数。是否有此类对象的定义,可以作为抽象元类,还是应包含方法的文档?
事实证明,几乎所有东西在技术上都类似于数组。“类数组”更多地是关于如何解释输入的说明,而不是对输入内容的限制。如果参数记录为类似数组的形式,则NumPy将尝试将其解释为数组。
除了几乎是重言式的之外,没有像数组一样的正式定义-
像数组一样是np.array
可以转换为的任何Python对象ndarray
。要做到这一点,您需要研究源代码。
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__
接口的对象,或者__array__
功能的任何对象,或者object
dtype的0维数组。本小节将详述如何创建 ndarray 对象,以及如何创建特殊的 ndarray 对象。 1. ndarray 对象 ndarray,也就是我们常用的 N 维数组对象,是 Numpy 最核心的组成部分。你可以把它视为一个快速而灵活的大数据集容器,利用这种数组你可以便捷地执行一些数学运算。 ndarray 有两个显著特点: ndarray 是一个通用的同构数据多维容器,也就是说,该容器中的每一个元素都
主要内容:创建ndarray对象,ndim查看数组维数,reshape数组变维NumPy 定义了一个 n 维数组对象,简称 ndarray 对象,它是一个一系列相同类型元素组成的数组集合。数组中的每个元素都占有大小相同的内存块,您可以使用索引或切片的方式获取数组中的每个元素。 ndarray 对象有一个 dtype 属性,该属性用来描述元素的数据类型,相关知识会在《NumPy数据类型》一节做详细介绍 。 ndarray 对象采用了数组的索引机制,将数组中的每个元素映射到内存
我为用户使用了两种模式。一个包含密码/salt,一个不包含用于返回前端的密码/salt。当我使用使用不带密码的模式的模型时,它仍然返回密码:/ 通用用户(用于发送到客户端) 验证用户(用于创建/更新/验证用户) 创建模型 var modelInstance=mongoose。模型(“authUser”,authUserSchema,“users”) (在不同的文件中) var modelInsta
我的问题是"为什么?:" 这些数组完全相同。 我的最小示例并没有再现这一点: 这个也没有: 我不知道为什么这些不平等。还有一个额外的问题,我如何比较它们? 我需要一种有效的方法来检查aaa是否在堆栈aa中。 我没有在aa中使用
问题内容: 我正在尝试从PHP数组创建JSON对象。该数组如下所示: 编码JSON的代码如下所示: 最后,JSON文件应该看起来像这样: 如何将创建的JSON代码封装在“项目”中:{JSON CODE HERE}。 问题答案: 通常,您将执行以下操作: 但是,似乎您希望输出与“ ”一起使用,因此最好确保通过传递常量来强制将其编码为对象。 “ ”括号指定一个对象,“ ”用于根据JSON规范的数组。
本文向大家介绍javascript工厂方式定义对象,包括了javascript工厂方式定义对象的使用技巧和注意事项,需要的朋友参考一下 每一个函数对象都有一个length属性,表示该函数期望接收的参数个数。 关于js面向对象的创建方式, 目标: 构建一个order对象. 包含三个属性:日期,金额,提交人 包含一个方法:显示字符串:”XX在XXXX-XX-XX 提交了额度为:XXXX元的订单" 一