gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:54 24 4
gpt4 key购买 nike

我正在尝试将一段“for”循环代码从 Matlab 翻译为 Python。该 block 中有一条语句:A[B]=C。这三个 A、B、C 都是矩阵。在Python中,由于Matlab和Python之间的索引标准不同,我需要写为A[B-1]=C。 当 B 非空时,这个语句在 python 中运行良好。但是,如果 B 为空,则该语句如下所示:

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

IndexError:用作索引的数组必须是整数(或 bool )类型

实际上,如果 B 为空,我想要的矩阵 A11 只是另一个空矩阵。当然,我可以使用 if block 来定义当 B 是空矩阵时矩阵 A11 应该是什么。但这太繁琐了,因为我还有另外 5 个语句,就像这种使用矩阵作为索引的语句。您能给我一个例子来说明如何解决这个问题吗?非常感谢!

最佳答案

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

我想你的意思是类似B = np.zeros(0)(其中参数是一个形状)。 Numpy 的默认值为 dtype =float64 但为了使用数组来索引整数或 bool 类型是必需的。对于值实际上是整数的非空数组,numpy 发现它可以只更改 dtype

要解决您的问题,您只需在初始化时指定dtype(整数或 bool 值)即可,即B = np.zeros(0, dtype=np.int) 工作正常。 A 将成为一个“空矩阵”,因为它的形状维度之一为 0,但其他维度不会改变。

关于python - 在 numpy 中使用空矩阵作为另一个矩阵的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com