Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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 2D数组?_Python_Arrays_Numpy - Fatal编程技术网

Python 如何修改除特定列索引之外的每行中的Numpy 2D数组?

Python 如何修改除特定列索引之外的每行中的Numpy 2D数组?,python,arrays,numpy,Python,Arrays,Numpy,这就是我现在所做的,以实现我想要的 In: a=numpy.zeros((3,2)) a[range(a.shape[0]),[0,0,1]] = 1 a Out: array([[ 1., 0.], [ 1., 0.], [ 0., 1.]]) 如您所见,我使用range函数来选择a中的所有行。有没有其他更干净的方法来选择每一行?执行这个特定的操作可以更干净地完成,因为您只需构建一个热数组,在numpy中有“干净”的方法来执行此操作。我推荐@MartinT

这就是我现在所做的,以实现我想要的

In: 
a=numpy.zeros((3,2))
a[range(a.shape[0]),[0,0,1]] = 1
a
Out:
array([[ 1.,  0.],
       [ 1.,  0.],
       [ 0.,  1.]])
如您所见,我使用
range
函数来选择a中的所有行。有没有其他更干净的方法来选择每一行?

执行这个特定的操作可以更干净地完成,因为您只需构建一个热数组,在
numpy
中有“干净”的方法来执行此操作。我推荐@MartinThoma的一个:

a = np.eye(2)[[0,0,1]]
此外,大多数机器学习软件包都有自己的一种热编码方法,这种方法甚至比这种方法更有效和“干净”,因为机器学习是一种热编码的最常用方法


但是,在进行这种奇特的索引时,通常不可能消除
范围
坐标。当您想要将表示扩展到二维以外时,没有一种清晰、明确的方式来表示该操作,而这种方式不会让您感到困惑。一次在两个以上的维度上工作是
numpy

Cleaner的全部意义,就像在更少的字符中一样?不,我的意思是像内置机制一样。例如,当我们使用不带数字的
时,它可以选择整个维度。我不能让它在这里工作。是否有其他运算符用于此目的?不,没有。这是选择这3项((0,0)、(1,0)和(2,1))的正常方式。它是纯简单的
advanced
索引,有两个匹配列表。