Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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_Numpy_Matrix - Fatal编程技术网

Python 创建矩阵,用numpy反射给定矩阵的属性

Python 创建矩阵,用numpy反射给定矩阵的属性,python,numpy,matrix,Python,Numpy,Matrix,当给定一个元素从0到K的nxk矩阵时,是否有一种高效、优雅的方法来创建以下矩阵: #0 | #2 | ... | #K ------------------------- Row 1 x | y | ... | z ------------------------- Row 2 a | b | ... | d ------------------------- ... ------------------------- Row N g | h | ... | j

当给定一个元素从0到K的nxk矩阵时,是否有一种高效、优雅的方法来创建以下矩阵:

       #0 | #2 | ... | #K
-------------------------
Row 1   x |  y | ... | z
-------------------------
Row 2   a |  b | ... | d
-------------------------
...
-------------------------
Row N   g |  h | ... | j

其中,在单元格1中,2应为第一行中的2s量

我知道,一个相当低效的方法是使用两个for循环来实现这一点,但我想知道是否也可以使用一些矩阵/NumPy操作来解决这个问题

干杯

编辑: 某些代码可能如下所示:

x_mod=np.zero((N,I))
对于范围内的n(n):
对于范围(i)中的i:
x_mod[n][int(x[n][i])]+=1
其中X是原始矩阵,X_mod是新矩阵

所以

X = 2 3 4 4 0 
    0 1 3 3 2
    1 1 4 2 2
预期结果如下所示:

1 0 1 1 2
1 1 1 2 0
0 2 2 0 1

我想你在找
np.bincount
。它的速度很快,但不幸的是,它只能在1D工作。因此需要一个循环:

import numpy as np

rng = np.random.default_rng()
N,K = 5,6
in_ = rng.integers(0,K,(N,K))
in_
# array([[2, 4, 3, 5, 4, 1],
#        [4, 5, 3, 5, 4, 5],
#        [2, 2, 0, 3, 3, 3],
#        [5, 5, 0, 4, 4, 5],
#        [1, 1, 0, 2, 3, 2]])
out = np.array([np.bincount(i,None,K) for i in in_])
out
# array([[0, 1, 1, 1, 2, 1],
#        [0, 0, 0, 1, 2, 3],
#        [1, 0, 2, 3, 0, 0],
#        [1, 0, 0, 0, 2, 3],
#        [1, 2, 2, 1, 0, 0]])

您能否包含一个带有两个for循环的示例,以便您的意图/规则清晰明了?以及
N=3
K=5
的期望结果?