如何在NumPy数组中获取用户输入?代码示例及问题分析
如何将用户输入存入NumPy数组?
我来帮你搞定这个问题,先看看你代码里的几个小问题,再给你正确的实现方式:
原代码的问题点
numpy.append()使用错误:这个函数需要两个必填参数——第一个是要追加元素的目标数组,第二个是要添加的元素。而且它不会原地修改原数组,而是返回一个新的数组。你之前只传了元素x,还没把返回值赋值给my_array,所以你的数组一直是空的。- 初始化数组可以更严谨:虽然
numpy.array([])能创建空数组,但提前指定数据类型(比如float)能避免后续可能出现的类型不一致问题。
修复后的循环实现(适合理解过程)
如果你想保留循环的方式,修改后的代码如下:
import numpy as np # 获取用户指定的数组大小 array_size = int(input("Size of array: ")) # 初始化空的float类型NumPy数组 my_array = np.array([], dtype=np.float64) for _ in range(array_size): # 获取用户输入的元素并转为浮点数 element = float(input("Element: ")) # 关键:将append返回的新数组重新赋值给my_array my_array = np.append(my_array, element) # 输出向下取整后的结果 print(np.floor(my_array))
更高效的实现方式
因为NumPy数组的内存是连续分配的,频繁调用append会多次触发内存重新分配,效率不高。更优的做法是先把用户输入存在普通Python列表里,再一次性转换成NumPy数组:
import numpy as np array_size = int(input("Size of array: ")) # 先用普通列表收集所有输入 element_list = [] for _ in range(array_size): element_list.append(float(input("Element: "))) # 一次性转换为NumPy数组 my_array = np.array(element_list, dtype=np.float64) print(np.floor(my_array))
额外提示
如果用户输入的都是整数,你可以把float(input(...))改成int(input(...)),同时把dtype=np.float64换成dtype=np.int64,根据实际需求调整即可。
内容的提问来源于stack exchange,提问作者Kaushal Raj
相关产品推荐
相关产品推荐

