Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy:排列输入和输出向量的正确方法_Python_Arrays_Numpy - Fatal编程技术网

Python Numpy:排列输入和输出向量的正确方法

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将输入和输出向量排列到矩阵中的正确方法是什么?如果您确定每列中的元素具有相同的大小/长度,则可以

我正在尝试创建一个包含两列和多行的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将输入和输出向量排列到矩阵中的正确方法是什么?

如果您确定每列中的元素具有相同的大小/长度,则可以选择并使用
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手册有更多的细节()。我无法添加任何详细信息,因为我打算在项目中使用它们已有一段时间了,但没有。我认为行长度不匹配是个坏主意。你的使用案例是什么?简单的神经网络。第一列表示输入特征。第二列表示输出概率。我认为行长度不匹配是个坏主意。你的使用案例是什么?简单的神经网络。第一列表示输入特征。第二列表示输出概率。