python – 获取NumPy数组中的列数的函数,如果它是1D数组,则返回1
发布时间:2020-12-20 11:29:18 所属栏目:Python 来源:网络整理
导读:我已经在3xN NumPy数组上定义了操作,我想循环遍历数组的每一列. 我试过了: for i in range(nparray.shape[1]): 但是,如果nparray.ndim == 1,则会失败. 是否有一种干净的方法来确定NumPy数组的列数,例如,如果它是一维数组(如MATLAB的大小操作那样),则获得1?
我已经在3xN NumPy数组上定义了操作,我想循环遍历数组的每一列.
我试过了: for i in range(nparray.shape[1]): 但是,如果nparray.ndim == 1,则会失败. 是否有一种干净的方法来确定NumPy数组的列数,例如,如果它是一维数组(如MATLAB的大小操作那样),则获得1? 否则,我已实施: if nparray.ndim == 1: num_points = 1 else: num_points = nparray.shape[1] for i in range(num_points): 解决方法
如果你只是在寻找不那么冗长的东西,你可以这样做:
num_points = np.atleast_2d(nparray).shape[1] 当然,这将使一个新的临时阵列只是为了形成它,这有点傻……但它会相当便宜,因为它只是一个相同内存的视图. 但是,我认为你的显式代码更具可读性,除了我可以尝试一下: try: num_points = nparray.shape[1] except IndexError: num_points = 1 如果你反复这样做,不管你做什么,都应该将它包装在一个函数中.例如: def num_points(arr,axis): try: return arr.shape[axis] except IndexError: return 1 那么你要写的就是: for i in range(num_points(nparray,1)): 当然,这意味着你可以通过编辑一个地方来改变世界各地,例如: def num_points(arr,axis): return nparray[:,...,np.newaxis].shape[1] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容