numpy.ndarray.shape 改变维度

1 投票
1 回答
571 浏览
提问于 2025-04-18 15:24

这个内容讲的是一个叫做numpy的库,它用来处理数组。在numpy中,每个数组都有一个叫做“形状”的属性,表示这个数组的维度,比如有多少行和多少列。

但是,这个形状的元组(就是一组数据)会随着数组的类型变化而改变。例如:

len(numpy.array([1,2,3]).shape) -> 1, shape=(1,)
len(numpy.array([[1,2,3],[4,5,6]]).shape) -> 2, shape=(2,3)

有没有其他方法可以获取数组的维度,而不管数组的类型是什么呢?

这里有一个我经常遇到的问题的例子:

mat3D = np.arange(27).reshape(3,3,3)
mat2D = np.arange(9)

def processMatrix(mat):
  if M.ndim == 2:
    return foo(mat)
  else:
    return np.array([foo(mat[:,:,c]) for c in range(mat.shape[2])]) 

如果有一个数组的形状是mat2D.shape = (3,3,1),那么代码会变得更简单:

def processMatrix(mat):
    return np.array([foo(mat[:,:,c]) for c in range(mat.shape[2])]) 

1 个回答

1

你可以使用

numpy.array([[1,2,3],[4,5,6]]).ndim

撰写回答