【问题标题】:How to work with empty arrays in python just like MATLAB?如何像 MATLAB 一样在 python 中使用空数组?
【发布时间】:2020-04-24 02:46:32
【问题描述】:

我正在实现从 MATLAB 到 Python 的代码。我必须定义一些空数组,为它们分配一些值并在代码体中使它们为空。

假设我在 MATLAB 中的代码如下所示:

s1 = []

s1 = [A.T]

s1 将在 MATLAB 中再次等同于空,以进行下一次迭代 (s1 = []) 。 我试着用python写这个,如下所示:

s1 = []
s1.append(A.T)
s11 = np.vstack(s1)

我可以在我的代码中使用s11 而不是s1。但是,对于下一次迭代,我应该清空s11,所以我这样写:s11 = []

当我到达 s11 = np.vstack(s1) 这一行时,这样做会引发错误,因为我在上一次迭代中将 s11 等同于 None 对象 ([])。

总之,我想知道如何在 python 中创建一个空数组,为其分配或附加值,然后再次使其为空? s1 是函数的输入,我必须能够在不同的迭代中将其设为空。 在 MATLAB 中,它非常简单,没有任何麻烦。

任何 cmets 将不胜感激。谢谢

【问题讨论】:

    标签: python arrays matlab append empty-list


    【解决方案1】:

    当我阅读您的问题时,您似乎正在使用列表。这有点令人困惑,因为 python 上的数组是其他东西然后是列表。

    一开始你已经在你的问题中提到了一个遮阳篷:

    A = [[1,2],[3,4]]
    s1 = []
    s1.append(A)
    
    s11 = np.vstack(s1)
    s11 = []
    

    一件非常重要的事情:在您使用 np.vstack 的那一刻,您的列表正在更改为类型 numpy.array。所以你不能再使用del s11[:]了。

    如果这不起作用,请向我们提供有关A.T 的更多信息,也许存在一些数据类型问题。

    剩下的一件事:你正在写一个正在引发的错误。我们很难在远离您的计算机的地方神奇地读取您的错误消息(这是非法的)。

    这两件事:错误消息和您最小示例中的完整数据对于我们为您提供帮助是必要的。

    【讨论】:

    • 嗨,关键是使用 s11 = [] 将在下一次迭代中引发错误。我们定义了 s11,而不是 s1,将 A 附加到它上面。在第二次迭代中,s11 就像 s1 一样,是空的,所以我们不能写 s11 = np.vstack(s1)。而且我们不能一次又一次地定义像 s111 这样的新变量。
    • 我仍然不知道这会引发什么错误。 s11=[] 只是将变量定义为空列表。因为我也不知道 A 是什么(它是 skalar、另一个列表还是 np.array)真的很难重现你的问题。
    猜你喜欢
    • 2017-05-27
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多