首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引包含函数的numpy数组

索引包含函数的numpy数组
EN

Stack Overflow用户
提问于 2016-11-07 21:31:16
回答 2查看 82关注 0票数 0

我有一个Numpy数组,"nFuncs“包含函数对象:

代码语言:javascript
复制
array([ [<bound method ncNN.sigmoid of <__main__.ncNN object at 0x11c01f510>>, 
         <bound method ncNN.sigmoid of <__main__.ncNN object at 0x11c01f510>>, 
         <bound method ncNN.sigmoid of <__main__.ncNN object at 0x11c01f510>>],
        [<bound method ncNN.sigmoid of <__main__.ncNN object at 0x11c01f510>>,
         <bound method ncNN.sigmoid of <__main__.ncNN object at 0x11c01f510>>]], dtype=object)

对数组进行索引的合法方法是什么?当我尝试nFuncs1,1 1,1时,我有IndexError:数组的太多索引。但是,nFuncs1可以工作。你能解释我为什么不能使用nFuncs1,1吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-08 01:10:11

列一个嵌套列表:

代码语言:javascript
复制
In [8]: alist=[[1,2,3],[4,5]]
In [9]: len(alist)
Out[9]: 2

这是一个由两个项目组成的列表;这些项目恰好是列表。在某种类型的元视图中,它是2d,但列表本身的任何内容都不是2d。

利用它制作一个数组:

代码语言:javascript
复制
In [10]: arr = np.array(alist)
In [11]: arr.shape
Out[11]: (2,)
In [12]: arr.dtype
Out[12]: dtype('O')
In [13]: arr
Out[13]: array([[1, 2, 3], [4, 5]], dtype=object)
In [14]: arr[0]
Out[14]: [1, 2, 3]
In [15]: type(arr[0])
Out[15]: list

它也有两个元素,事实上,与alist (相同的id)相同的两个子列表。

代码语言:javascript
复制
In [16]: id(alist[0])
Out[16]: 2992863468
In [17]: id(arr[0])
Out[17]: 2992863468

如果我更改其中一个子列表的元素,则更改将出现在另一个结构中。

代码语言:javascript
复制
In [18]: arr[0][1]=3
In [19]: arr
Out[19]: array([[1, 3, 3], [4, 5]], dtype=object)
In [20]: alist
Out[20]: [[1, 3, 3], [4, 5]]

在大多数情况下,像这样的对象数组就像一个列表。你可以重塑它。`arr.reshape(2,1)',但你不能附加到它。要执行大多数操作,您(或numpy)必须遍历元素,就像它是一个列表一样。

与2d整数数组进行对比。

代码语言:javascript
复制
In [21]: A=np.array([[1,2,3],[4,5,6]])
In [22]: A
Out[22]: 
array([[1, 2, 3],
       [4, 5, 6]])
In [23]: A.shape
Out[23]: (2, 3)
In [24]: A.dtype
Out[24]: dtype('int32')

如果我将object的元素转换为数组,可能会可视化arr屏障:

代码语言:javascript
复制
In [26]: arr[0]=np.array(arr[0])
In [27]: arr[1]=np.array(arr[1])
In [28]: arr
Out[28]: array([array([1, 3, 3]), array([4, 5])], dtype=object)

它现在是一个数组,但它仍然与2d数组不一样。

票数 1
EN

Stack Overflow用户

发布于 2016-11-07 22:05:41

该数组具有形状(2,):它是一维的.这是因为构造函数中的第一个和第二个子列表有不同的长度。因此,这被解释为一个由2个列表组成的一维数组。要获得一个函数数组,请将函数插入第二个列表中(或从第一个列表中删除一个函数)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40475018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档