python - 如何使用“断言”命令将输入限制为仅获取一组数据中的列数?
问题描述
我已经编写了一个函数,可以在给定数据输入和一个名为 col_num 的变量时检索特定的数据列,但是我需要编写一个断言命令,该命令不会让输入 col_num 超过数据中的列数(为此我假设我不知道列数或有太多无法计算)。
我的功能如下:
import numpy as np
data = np.loadtxt('data.csv', delimiter = ',', skiprows = 1)
def get_column(data, col_num):
assert(len(data.shape) == 2
assert type(col_num) is int
#assert goes here
return data[:, col_num]
任何帮助将不胜感激,谢谢!
编辑:我添加了函数必须满足的代码图像。
https://i.stack.imgur.com/TlpMw.png 该代码满足中间单元格,但导致底部单元格出错。
解决方案
首先,不要assert
用于运行时检查。它可以被优化掉:改为引发异常。
其次,正如评论所指出的,您确实拥有数据:
if data.shape[1] < col_num:
raise ValueError(f"Supplied col num of {col_num} is greater than {data.shape[1]} columns")
编辑:
您的断言失败,因为您实际上并未测试负列号:您需要添加一行这样做。但是我重复我上面所说的:断言属于我是测试套件本身,或者在开发中,而不是在生产代码中。你不能保证它不会被优化掉。
推荐阅读
- excel - 根据 Excel 2010 中另一列的日期平均一列中的单元格
- sql-server - 如何在 SQL CREATE 脚本中声明 GEOMETRY 数据类型属性?
- ios - fastlane increment_version_number(bump_type:“补丁”)不起作用
- spring-boot - 在 Spring Boot 应用程序中将多个 POST API 放在单个资源类中
- sql - 从 Azure 虚拟机中的 SQL 数据库安全连接到 PowerBI Online
- javascript - 如何修复 Vue 项目中的“POST http://127.0.0.1:8000/admin/auth/user/net::ERR_CONNECTION_REFUSED”错误?
- django - 为什么 django 静态文件没有加载
- flutter - Flutter:如何删除 ListView 顶部的空白空间
- c - 如何在mac m1(苹果硅)上安装GDB?
- javascript - 有没有最新的输入代码的方法?