我有这个需要翻译成python的MATLAB代码,但是在firings数组中创建一个新列时有一个问题。在MATLAB中,代码创建了一个n*2矩阵,它最初是空的,我希望在python中也能这样做。使用NumPy,我创建了fired = np.where(v >= 30)
。但是python创建的是元组而不是数组,因此会抛出一个错误:
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
这是我在MATLAB中的代码,我想转换成Python
^{pr2}$感谢帮助!谢谢!在
如果数组本质上是1D,^{} 将生成一个两元素元组。对于1D情况,您只需要访问
np.where
结果的第一个元素:然后可以继续连接矩阵。另外,user @Divakar提供的一个建议是使用^{} ,它将等价地在NumPy数组中找到非零值,并将其展平到1D数组中,以减少麻烦:
^{pr2}$请注意,如果在
fired
中没有找到匹配项,则连接逻辑将不起作用。在查看连接逻辑时,您需要考虑到这一点。使用MATLAB的方便之处在于,你可以连接空矩阵,结果是没有效果的(显然)。在还要注意,NumPy中没有行向量或列向量的概念。它只是一个一维数组。如果您想明确地将数组强制为列向量,那么您需要在第二维中引入一个单轴轴来实现这一点。请注意,只有在} 和^{} 来垂直和水平连接数组,以帮助您完成所要求的操作。您首先要做的是创建一个空的二维数组,然后执行我们刚刚介绍的内容:
np.where
给出匹配结果的情况下,这才有效。之后,您可以使用^{这里^{} 查找NumPy数组中的元素总数。如果}时才会执行。在
np.where
的结果没有生成结果,fired
中的元素数应该是0。因此,if
语句只有在v
中发现至少一个元素属于{如果使用numpy,则可以定义ndarray:
相关问题 更多 >
编程相关推荐