使用空矩阵作为numpy中另一个矩阵的索引

2024-04-26 01:05:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一段for循环代码从Matlab翻译成Python。在这个块中有一个语句:A[B]=C。所有这三个A,B和C都是矩阵。在python中,我需要以A[B-1]=C的形式编写,因为Matlab和python的索引条件不同。 当B为非空时,该语句在python中运行良好。但是,如果B为空,则此语句如下所示:

A11 = np.copy(A[:,B-1]) #Remind that B is an empty matrix, like B=np.array([0])

我ndexError:使用的数组as索引必须是整数(或布尔)类型

实际上,如果B是空的,那么对于矩阵A11,我想要的只是另一个空矩阵。当然,当B是空矩阵时,我可以用if块来定义矩阵A11应该是什么。但它会太繁琐,因为我还有另外一个5语句,像这样使用矩阵作为索引。你能给我举个例子说明如何解决这个问题吗?谢谢!你知道吗


Tags: 代码anforthatisnp矩阵语句
1条回答
网友
1楼 · 发布于 2024-04-26 01:05:30

B = np.array([0])不生成空矩阵,它只是将列表[0]转换为numpy数组。你知道吗

我想你的意思是B = np.zeros(0)(这里的参数是一个形状)。Numpy的默认值是dtype =float64,但是为了使用数组索引整数或布尔类型是必需的。对于值实际上是整数的非空数组,numpy指出它可以更改dtype。你知道吗

要解决您的问题,只需在初始化时指定dtype(int或boolean),即B = np.zeros(0, dtype=np.int)就可以了。A将是一个“空矩阵”,因为它的一个形状维度是0,但是其他的没有改变。你知道吗

相关问题 更多 >