Arrays 将大小为n的numpy数组转换为标量,子项索引号作为标量值
我想转换一个numpy数组Arrays 将大小为n的numpy数组转换为标量,子项索引号作为标量值,arrays,python-3.x,numpy-ndarray,scalar,Arrays,Python 3.x,Numpy Ndarray,Scalar,我想转换一个numpy数组 a = array([[1, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1], [0, 0, 0, 1, 0, 0]]) 转换为以子项索引号作为标量值的标量 所需输出 a1 = array([[1],[1],[3],[3],[6],[4]]) 我试过
a = array([[1, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 1, 0, 0]])
转换为以子项索引号作为标量值的标量
所需输出
a1 = array([[1],[1],[3],[3],[6],[4]])
我试过这个方法:
a1 = []
for item in a:
a1.append(np.where(item==1))
我得到这个输出:
a1 = [(array([0]),),
(array([0]),),
(array([2]),),
(array([2]),),
(array([6]),),
(array([4]),)]
有没有一种更像蟒蛇的方法来实现它?在仔细阅读了这个问题之后,我认为这一行应该 以一种更为通俗的方式解决您的问题:
np.where(a==1)[1].reshape((a.shape[0],1))
如果您喜欢从1
开始索引,而不是从0
(这在您想要的输出中很明显),那么您只需在上面的行中添加1
,即
np.where(a==1)[1].reshape((a.shape[0],1)) + 1
请注意,上面的示例输出中最后两个元素似乎有错误