Swift MLDataTable - 如何删除行?
Swift MLDataTable - how to remove rows?
我正在从 .csv 文件创建 MLDataTable
并想删除一些行,即特定列具有特定值的所有行 - 这可能吗?
我知道我的回答有点晚了,但希望其他人会觉得它有用。
您不能从给定的 table 中移除行,但您可以创建一个新的 table 并过滤掉一些行。
这是一个例子table:
let employeesDict: [String: MLDataValueConvertible] = [
"First Name": ["Alice", "Bob", "Charlie", "Dave", "Eva"],
"Years of experience": [10, 1, 8, 5, 3],
"Gender": ["female", "male", "male", "male", "female"],
]
let employeesTable = try! MLDataTable(dictionary: employeesDict)
过滤是通过将 MLDataColumn<Bool>
的实例传递给 table 的下标运算符来实现的。 Apple 称之为 'row mask'。
这是用于过滤掉手工构建的女性实例的行掩码:
let maleEmployeesMaskByHand = MLDataColumn([false, true, true, true, false])
将其作为参数传递给 employeesTable
的下标运算符会产生以下 table:
let maleEmployeesTable = employeesTable[maleEmployeesMaskByHand]
print(maleEmployeesTable)
+----------------+----------------+---------------------+
| Gender | First Name | Years of experience |
+----------------+----------------+---------------------+
| male | Bob | 1 |
| male | Charlie | 8 |
| male | Dave | 5 |
+----------------+----------------+---------------------+
这是构建相同行掩码的另一种方法:
let genderColumn: MLDataColumn<String> = employeesTable["Gender"]
let maleEmployeesMask = genderColumn != "female"
print(employeesTable[maleEmployeesMask])
首先检索所需的列,然后 - 由于运算符重载 - 通过将 !=
运算符应用于整个列来构建行掩码。
这是一种在一行中实现相同目的的方法:
print(employeesTable[ employeesTable["Gender"] != "female" ])
A link 相关文档:https://developer.apple.com/documentation/createml/mldatatable/3006094-subscript
我正在从 .csv 文件创建 MLDataTable
并想删除一些行,即特定列具有特定值的所有行 - 这可能吗?
我知道我的回答有点晚了,但希望其他人会觉得它有用。
您不能从给定的 table 中移除行,但您可以创建一个新的 table 并过滤掉一些行。
这是一个例子table:
let employeesDict: [String: MLDataValueConvertible] = [
"First Name": ["Alice", "Bob", "Charlie", "Dave", "Eva"],
"Years of experience": [10, 1, 8, 5, 3],
"Gender": ["female", "male", "male", "male", "female"],
]
let employeesTable = try! MLDataTable(dictionary: employeesDict)
过滤是通过将 MLDataColumn<Bool>
的实例传递给 table 的下标运算符来实现的。 Apple 称之为 'row mask'。
这是用于过滤掉手工构建的女性实例的行掩码:
let maleEmployeesMaskByHand = MLDataColumn([false, true, true, true, false])
将其作为参数传递给 employeesTable
的下标运算符会产生以下 table:
let maleEmployeesTable = employeesTable[maleEmployeesMaskByHand]
print(maleEmployeesTable)
+----------------+----------------+---------------------+
| Gender | First Name | Years of experience |
+----------------+----------------+---------------------+
| male | Bob | 1 |
| male | Charlie | 8 |
| male | Dave | 5 |
+----------------+----------------+---------------------+
这是构建相同行掩码的另一种方法:
let genderColumn: MLDataColumn<String> = employeesTable["Gender"]
let maleEmployeesMask = genderColumn != "female"
print(employeesTable[maleEmployeesMask])
首先检索所需的列,然后 - 由于运算符重载 - 通过将 !=
运算符应用于整个列来构建行掩码。
这是一种在一行中实现相同目的的方法:
print(employeesTable[ employeesTable["Gender"] != "female" ])
A link 相关文档:https://developer.apple.com/documentation/createml/mldatatable/3006094-subscript