我有一个Numpy数组,"nFuncs“包含函数对象:
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吗?
发布于 2016-11-08 01:10:11
列一个嵌套列表:
In [8]: alist=[[1,2,3],[4,5]]
In [9]: len(alist)
Out[9]: 2这是一个由两个项目组成的列表;这些项目恰好是列表。在某种类型的元视图中,它是2d,但列表本身的任何内容都不是2d。
利用它制作一个数组:
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)相同的两个子列表。
In [16]: id(alist[0])
Out[16]: 2992863468
In [17]: id(arr[0])
Out[17]: 2992863468如果我更改其中一个子列表的元素,则更改将出现在另一个结构中。
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整数数组进行对比。
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屏障:
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数组不一样。
发布于 2016-11-07 22:05:41
该数组具有形状(2,):它是一维的.这是因为构造函数中的第一个和第二个子列表有不同的长度。因此,这被解释为一个由2个列表组成的一维数组。要获得一个函数数组,请将函数插入第二个列表中(或从第一个列表中删除一个函数)。
https://stackoverflow.com/questions/40475018
复制相似问题