如何在Python NumPy数组中输入空格分隔的整数
报错原因
你触发的TypeError: expected sequence object with len >= 0 or a single integer错误,是因为传入NumPy数组初始化相关API(比如np.ones、np.zeros)的形状参数不符合要求:大概率是读取第一行输入后没有做整数类型转换,直接把字符串格式的长度值传给了需要整数参数的函数。
等效实现方案
要实现和list(map(int,input().split(" ")))功能完全一致、直接生成NumPy数组的效果,有两种常用写法:
- 高性能写法(无列表中转,适合大输入量场景):使用
np.fromstring直接解析输入字符串import numpy as np # 读取第一行的数组长度,不需要做长度校验可以省略这行 arr_len = int(input()) # 按空格切分输入,直接生成int类型NumPy数组 arr = np.fromstring(input().strip(), dtype=int, sep=' ') - 兼容原有map逻辑的写法:直接将map对象传入
np.array,不需要先转成Python列表import numpy as np arr_len = int(input()) arr = np.array(map(int, input().split()), dtype=int)
注意事项
所有需要传入形状参数的NumPy数组构造函数,参数必须是整数或者由整数构成的序列,直接传入读取到的原始字符串输入一定会触发类型错误。
内容的提问来源于stack exchange,提问作者085Pushpraj Singh Pawar
相关产品推荐
相关产品推荐

