Numpy:获取NumPy对象数组的属性
在本文中,我们将介绍如何获取NumPy对象数组中的属性。在NumPy中,可以创建数组,其中每个元素都是对象而不是数字。可以使用不同的属性获取值或更改值。
阅读更多:Numpy 教程
创建对象数组
我们首先将创建一个Student类,表示学生的信息。我们将创建一个名为“students”的对象数组,并将其添加到这个数组中。
import numpy as np
class Student:
def __init__(self, name, age, grade):
self.name = name
self.age = age
self.grade = grade
students = np.array([
Student("Lucy", 18, 90),
Student("Jack", 17, 85),
Student("Tony", 18, 92)
])
我们使用array函数创建了一个名为students的对象数组。每个对象都有三个属性:名字,年龄和分数。
获取单个元素的属性
要获取单个元素的属性,可以使用普通的点符号(.)来访问它。例如,我们可以获取第一个学生的名字。
print(students[0].name) # Output: 'Lucy'
我们使用索引运算符([])访问数组的第一个元素,然后使用点符号(.)访问其中的属性。
获取所有元素的属性
要获取对象数组中的所有元素的属性,可以使用列表推导式。例如,要获取所有学生的年龄和分数,可以执行以下操作:
ages = [s.age for s in students]
grades = [s.grade for s in students]
print(ages) # Output: [18, 17, 18]
print(grades) # Output: [90, 85, 92]
我们使用列表推导式获取所有学生的年龄和分数。这个列表包含所有元素的属性,并用于将它们提取为一个新列表。
改变单个元素的属性
要更改单个元素的属性,可以使用普通的点符号(.)和赋值运算符(=)。例如,我们可以更改第二个学生的分数。
students[1].grade = 90
print(students[1].grade) # Output: 90
我们使用索引运算符([])访问数组的第二个元素,然后使用点符号(.)和赋值运算符(=)来更改其属性。
改变所有元素的属性
要更改所有元素的属性,可以使用循环。例如,要将所有学生的年龄减去1,可以执行以下操作:
for s in students:
s.age -= 1
print([s.age for s in students]) # Output: [17, 16, 17]
我们使用循环来遍历数组中的每个元素,并使用点符号(.)和赋值运算符(=)来更改其属性。
总结
在本文中,我们学习了如何获取NumPy对象数组中的属性。我们看到如何使用点符号(.)来访问单个元素的属性,如何使用列表推导式来获取所有元素的属性,以及如何使用循环来更改所有元素的属性。这些技术对于处理对象数组中的数据非常有用,例如在机器学习中使用特征向量时。
极客教程