Python Numpy:排列输入和输出向量的正确方法
我正在尝试创建一个包含两列和多行的numpy数组。第一列表示大小为3的输入向量。第二列表示大小为2的输出向量Python Numpy:排列输入和输出向量的正确方法,python,arrays,numpy,Python,Arrays,Numpy,我正在尝试创建一个包含两列和多行的numpy数组。第一列表示大小为3的输入向量。第二列表示大小为2的输出向量 arr = np.array([ [np.array([1,2,3]), np.array([1,0])] [np.array([4,5,6]), np.array([0,1])] ]) 我期待着:arr[:,0]。shape 返回(2,3),但它返回(2,) 使用numpy将输入和输出向量排列到矩阵中的正确方法是什么?如果您确定每列中的元素具有相同的大小/长度,则可以
arr = np.array([
[np.array([1,2,3]), np.array([1,0])]
[np.array([4,5,6]), np.array([0,1])]
])
我期待着:arr[:,0]。shape
返回(2,3),但它返回(2,)
使用numpy将输入和输出向量排列到矩阵中的正确方法是什么?如果您确定每列中的元素具有相同的大小/长度,则可以选择并使用
numpy.row\u stack
:
np.row_stack(arr[:,0]).shape
# (2, 3)
np.row_stack(arr[:,1]).shape
# (2, 2)
如果确定每列中的元素具有相同的大小/长度,则可以选择,然后使用
numpy.row\u stack
:
np.row_stack(arr[:,0]).shape
# (2, 3)
np.row_stack(arr[:,1]).shape
# (2, 2)
那么,代码呢
arr = np.array([
[np.array([1,2,3]), np.array([1,0])],
[np.array([4,5,6]), np.array([0,1])]
])
创建一个对象数组,索引第一列将返回两行,每行中有一个对象,这说明了大小。要得到你想要的东西,你需要用类似
np.vstack(arr[:, 0])
这将从第一列中的对象创建一个数组。这不是很方便,把它们存储在字典里会更有意义,比如
io = {'in': np.array([[1,2,3],[4,5,6]]),
'out':np.array([[1,0], [0,1]])
}
结构化数组可以同时提供这两种功能。创建有点棘手,举个例子
arr = np.array([
(1,2,3), (1,0)),
((4,5,6), (0,1)) ],
dtype=[('in', '3int64'), ('out', '2float64')])
创建一个结构化数组,其中包含字段in
和out
,分别由3个整数和2个浮点组成。可以像往常一样访问行
In[73]: arr[0]
Out[74]: ([1, 2, 3], [ 1., 0.])
或者按字段名
In [73]: arr['in']
Out[73]:
array([[1, 2, 3],
[4, 5, 6]])
numpy手册有更多的细节()。我无法添加任何详细信息,因为我打算在项目中使用它们已有一段时间了,但还没有。因此,代码
arr = np.array([
[np.array([1,2,3]), np.array([1,0])],
[np.array([4,5,6]), np.array([0,1])]
])
创建一个对象数组,索引第一列将返回两行,每行中有一个对象,这说明了大小。要得到你想要的东西,你需要用类似
np.vstack(arr[:, 0])
这将从第一列中的对象创建一个数组。这不是很方便,把它们存储在字典里会更有意义,比如
io = {'in': np.array([[1,2,3],[4,5,6]]),
'out':np.array([[1,0], [0,1]])
}
结构化数组可以同时提供这两种功能。创建有点棘手,举个例子
arr = np.array([
(1,2,3), (1,0)),
((4,5,6), (0,1)) ],
dtype=[('in', '3int64'), ('out', '2float64')])
创建一个结构化数组,其中包含字段in
和out
,分别由3个整数和2个浮点组成。可以像往常一样访问行
In[73]: arr[0]
Out[74]: ([1, 2, 3], [ 1., 0.])
或者按字段名
In [73]: arr['in']
Out[73]:
array([[1, 2, 3],
[4, 5, 6]])
numpy手册有更多的细节()。我无法添加任何详细信息,因为我打算在项目中使用它们已有一段时间了,但没有。我认为行长度不匹配是个坏主意。你的使用案例是什么?简单的神经网络。第一列表示输入特征。第二列表示输出概率。我认为行长度不匹配是个坏主意。你的使用案例是什么?简单的神经网络。第一列表示输入特征。第二列表示输出概率。