如何检查数组是否是多维的

时间:2016-11-22 19:03:59

标签: python arrays numpy multidimensional-array

我正在尝试编写一个代码来检查n是否是数组A的最大值,如果它返回True如果它不返回False但我有两个条件,如果值是多维数据或单数据我不知道如何写下:

 if [A is unidimentional]:
     maximum=A[0]
     for i in range(A.shape[0]):
         if max(A[i],maximum)==A[i]:
             maximum=A[i]
     if max(n,maximum)!=n:
         return False
     return True

     else:
         maximum=A[0][0]
         for i in range(A.shape[0]):
         for j in range(A.shape[1]):
             if max(A[i][j],maximum)==A[i][j]:
                 maximum=A[i][j]
     if max(n,maximum)!=n:
         return False
     return True

如果有人知道如何写出这个条件,那将非常有用谢谢

4 个答案:

答案 0 :(得分:4)

def is_multidimensional(A):
    return A.ndim > 1

答案 1 :(得分:2)

尝试以下方法:

import numpy as np

my_array = np.array([[1,2,3],[4,5,6]])
d = len(my_array.shape)
print(d)  # Output: 2

现在,您可以针对d进行测试,如果其值为2,那么您的数组是2维。

答案 2 :(得分:2)

如果您只是想检查一个数组是否是多维的,只需检查数组shape的长度

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print len(arr.shape)

如果该值大于1,那么您的数组是多维的

但是,如果要做的只是检查n是否等于数组中的最大值,则不需要手动实现它。 np.amax会告诉您:

largest_element = np.amax(arr)

if n == largest_element:
    return True
else:
    return False

答案 3 :(得分:1)

如果矩阵是多维的,那么max将返回一个列表。

否则它将返回一个int。

if type(max(A))== list:
    # do some stuff for handling multidimensional
else: 
    # do some stuff for handling unidimensional 

或者你可以在这种情况下使用numpy

np.max(A)

无论A的尺寸如何,

都会返回一个int。

A =[[1,2,3,4],[1,4,5,6]]
max(A)
Out[57]: [1, 4, 5, 6]


np.max(A)
Out[64]: 6