我正在尝试将一段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语句,像这样使用矩阵作为索引。你能给我举个例子说明如何解决这个问题吗?谢谢!你知道吗
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,但是其他的没有改变。你知道吗相关问题 更多 >
编程相关推荐