numpy.all()函数 与 numpy.any()函数

1 numpy.all()

 all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False。本质上讲,all()实现了或(AND)运算

numpy.all(a, axis=None, out=None, keepdims=<no value>)
参数含义返回值
a输入可转换为数组的数组或对象

ndarray,bool

除非指定out,否则将返回一个新的布尔值或数组,在这种情况下,将返回对out的引用。

axisNone或int或int的元组,可选。沿轴或轴执行逻辑AND减少。 默认值(axis = None)是对输入数组的所有维度执行逻辑AND。 轴可以是负的,在这种情况下,它从最后一个轴到第一个轴计数。
outndarray,可选
keepdimsbool,可选。
  • 栗子1

import numpy as np

# NumPy all() 判断矩阵中 所有元素 是否 都为True
a2 = np.arange(5)       # 生成一个矩阵 [0  1  2  3  4]
print("np.all(a2):", np.all(a2))    # 输出:False

a3 = np.array([0, 3, 0, 0, 0])  # 随手写一个矩阵  [0  3  0  0  0]
print("np.all(a3):", np.all(a3))  # 输出:False

a4 = np.zeros_like(a3)       # 生成一个全是零的矩阵,形状与a3一样 [0  0  0  0  0]
print("np.all(a4):", np.all(a4))  # 输出:False

a5 = np.full_like(a3, False)  # 生成一个全是False的矩阵,形状与a3一样
print("np.all(a5):", np.all(a5))  # 输出:False

a6 = np.full_like(a3, True)  # 生成一个全是True的矩阵,形状与a3一样
print("np.all(a6):", np.all(a6))  # 输出:True
  • 栗子2

import numpy as np

a = np.eye(5)
print(a)
print(((a == 0) | (a == 1)).all())
print((a == 0).all())


# result

[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
True
False

2 numpy.any()

np.array.any()是操作,任意一个元素为True,输出为True。本质上讲,any()实现了或(OR)运算。

numpy.any(a, axis=None, out=None, keepdims=<no value>)
  • 栗子1

import numpy as np

# NumPy any() 判断矩阵中 是否 有一个元素 为True
a2 = np.arange(5)       # 生成一个矩阵 [0  1  2  3  4]
print("np.any(a2):", np.any(a2))    # 输出:True

a3 = np.array([0, 3, 0, 0, 0])  # 随手写一个矩阵
print("np.any(a3):", np.any(a3))  # 输出:True

a4 = np.zeros_like(a3)       # 生成一个全是零的矩阵,形状与a3一样 [0  0  0  0  0]
print("np.any(a4):", np.any(a4))  # 输出:False

a5 = np.full_like(a3, False)  # 生成一个全是False的矩阵,形状与a3一样
print("np.any(a5):", np.any(a5))  # 输出:False

a6 = np.full_like(a3, True)  # 生成一个全是True的矩阵,形状与a3一样
print("np.any(a6):", np.any(a6))  # 输出:True
  • 栗子2

import numpy as np

a = np.eye(5)
print(a)
print((a == 0).all())
print((a == 0).any())


# result

[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
False
True

3 判断np.array是否相等

首先,我们看一下list和np.array的区别:

lst1 = [1,3,5,7,9]
lst2 = [2,4,6,8,10]
print(lst1 == lst2)

# result

False
import numpy as np

a = np.eye(5)
b = np.eye(5)
c = np.ones((5, 5))

print(a)
print(b)
print(c)
print((a == b))
print((a == c))


# result

[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]

[[ True False False False False]
 [False  True False False False]
 [False False  True False False]
 [False False False  True False]
 [False False False False  True]]

可以看出:用 “==” 判断两个list 是否相同,返回的是True或False,而np.array返回的是每个元素值比较的列表。

那么如何比较两个np.array,而不是其中的元素呢?

import numpy as np

a = np.eye(5)
b = np.eye(5)
c = np.ones((5, 5))

print(a)
print(b)
print(c)
print((a == b))
print((a == c))
print((a == b).all())      # a.shape 与 b.shape需相同,否则会出错
print((a == c).all())
print((a == c).any())


# results


[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]

[[ True False False False False]
 [False  True False False False]
 [False False  True False False]
 [False False False  True False]
 [False False False False  True]]

True
False
True

a == b返回的仍然是np.array类型的数组,因此,再通过.all()方法即可判断a、b是否相等。

注:a.shape 与 b.shape需相同,否则会出错。
 

参考:

 

 

 

 

 

 

 

 

  • 29
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: The error message you're seeing suggests that you're trying to call the `sort_values` method on a NumPy array, but this method doesn't exist for NumPy arrays. This method is specific to Pandas DataFrames and Series. If you want to sort a NumPy array, you can use the `sort` method instead. For example: ``` import numpy as np arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3]) arr.sort() print(arr) ``` This will output: ``` [1 1 2 3 3 4 5 5 6 9] ``` If you need to sort a NumPy array based on the values in another array, you can use `np.argsort` to get the indices that would sort the array, and then use those indices to sort the original array. For example: ``` import numpy as np values = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3]) indices = np.argsort(values) sorted_values = values[indices] print(sorted_values) ``` This will output: ``` [1 1 2 3 3 4 5 5 6 9] ``` I hope this helps! Let me know if you have any further questions. ### 回答2: `numpy.ndarray`是一个用于存储多维数组的numpy库中的类。它是一个固定大小的同类型元素的数组,不包含所谓的索引或标签。因此,`numpy.ndarray`没有`sort_values`这个属性。 要对numpy数组进行排序,可以使用`numpy.sort`函数。`numpy.sort`函数默认会返回一个已经排序的新数组,并且不会改变原始数组。如果想要在原始数组上进行排序,可以使用数组的`sort`方法。 示例代码如下: ``` import numpy as np # 创建一个5个元素的一维数组 arr = np.array([5, 3, 1, 4, 2]) # 使用numpy.sort函数对数组进行排序,返回一个新数组 sorted_arr = np.sort(arr) # 打印排序后的数组 print(sorted_arr) # 输出:[1 2 3 4 5] # 使用数组的sort方法对数组进行原地排序(会改变原始数组) arr.sort() # 打印原始数组 print(arr) # 输出:[1 2 3 4 5] ``` 在这个例子中,我们首先创建了一个包含5个元素的一维数组`arr`,然后使用`np.sort`函数对数组进行排序,返回一个新数组`sorted_arr`。最后,我们使用数组的`sort`方法对原始数组`arr`进行了原地排序。通过打印结果,我们可以看到数组已经按照升序进行了排序。 因此,如果需要对numpy数组进行排序,可以使用`np.sort`函数或者数组的`sort`方法,而不是`sort_values`属性。 ### 回答3: `numpy.ndarray`对象没有`sort_values`属性。 `numpy.ndarray`是NumPy库中的一个多维数组对象,用于存储和操作数值数据。它是一个基于C语言的数据结构,因此在Python中创建和操作NumPy数组比使用内置的Python列表更高效。 而`sort_values`是Pandas库中的一个DataFrame对象的方法,用于对数据按照指定的列进行排序。Pandas库是用于数据分析和数据处理的强大工具,具有处理和分析大型数据集的能力。 因此,如果出现"numpy.ndarray" object has no attribute 'sort_values'的错误,很可能是因为代码中使用了一个NumPy数组对象,而尝试访问了Pandas中的`sort_values`方法。由于NumPy数组对象不具有该方法,所以会出现该错误。 要解决这个问题,可以考虑以下几种方法: 1. 检查导入的库是否正确。确保导入了NumPy库(`import numpy as np`)和Pandas库(`import pandas as pd`)。 2. 检查代码中的变量是否正确。确认数组对象是一个NumPy数组(`numpy.ndarray`)而不是Pandas的DataFrame(`pandas.DataFrame`)。如果想要使用`sort_values`方法,需要使用Pandas库中的DataFrame对象。 3. 如果确实需要对NumPy数组进行排序操作,可以使用NumPy库中的`np.sort()`函数进行排序。例如,`np.sort(array)`可以对NumPy数组`array`按照默认顺序进行排序。 综上所述,解决该问题的关键是明确使用的数据对象类型,以及导入正确的库并调用相应的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值