如何在Python中创建一个预期维度为M乘N的void矩阵(未填充为1或0)?

0 python vector matrix dimension

为了在Python中创建N个元素的void向量,我们使用:

a = [None] * N
Run Code Online (Sandbox Code Playgroud)

如何创建M次N的矩阵,而不是用1或0填充?谢谢!

Sin*_*ion 5

更"矩阵"的答案是使用numpy的objectdtype:例如:

>>> import numpy as np
>>> np.ndarray(shape=(5,6), dtype=np.object)
array([[None, None, None, None, None, None],
       [None, None, None, None, None, None],
       [None, None, None, None, None, None],
       [None, None, None, None, None, None],
       [None, None, None, None, None, None]], dtype=object)
Run Code Online (Sandbox Code Playgroud)

但是,正如wim所说,如果你用它来做数学,这可能是低效的.

>>> mat = np.empty(shape=(5,6))
>>> mat.fill(np.nan)
>>> mat
array([[ nan,  nan,  nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan,  nan,  nan],
       [ nan,  nan,  nan,  nan,  nan,  nan]])
>>>
Run Code Online (Sandbox Code Playgroud)

如果你真的使用更多python对象的东西,并且不打算填充矩阵,你可以使用更好的东西; 一个dict!

>>> from collections import defaultdict
>>> mat = defaultdict(lambda: None)
>>> mat[4,4]
>>> mat[4,4] is None
True
Run Code Online (Sandbox Code Playgroud)

  • 如果你打算在数组中使用数字,那么使用`np.nan`比使用None/dtype = object更有意义.如果您"不关心"值是什么,请使用np.empty. (2认同)