首页 > 解决方案 > 在 python 中使用用户输入创建一个数组

问题描述

我想连接一个包含不同元素大小python的数组作为用户输入不幸的是它不适用于用户输入,我收到以下错误“值错误:无法连接零维数组”我不明白它是如何工作的通常但用户输入不起作用?

 import numpy as np 
 #lst_2=np.concatenate([[1],[2],np.repeat(3,3),[2]])
 lst_2=input("PLEASE ENTER THE THING:: ")

  print('OKKKKL',lst_2)
  np.concatenate(lst_2)

标签: pythonarraysnumpy

解决方案


好的,更详细地说,您创建一个列表:

In [251]: alist = [[1],[2],np.repeat(3,3),[2]]
In [252]: alist
Out[252]: [[1], [2], array([3, 3, 3]), [2]]

并应用于concatenate该列表:

In [253]: np.concatenate(alist)
Out[253]: array([1, 2, 3, 3, 3, 2])

使用input,如果我复制粘贴相同的内容,我会得到string

In [254]: astr = input()
[[1],[2],np.repeat(3,3),[2]]
In [255]: astr
Out[255]: '[[1],[2],np.repeat(3,3),[2]]'

引号很重要。 concatenate不适用于:

In [256]: np.concatenate(astr)
Traceback (most recent call last):
  File "<ipython-input-256-95017eec7f88>", line 1, in <module>
    np.concatenate(astr)
  File "<__array_function__ internals>", line 5, in concatenate
ValueError: zero-dimensional arrays cannot be concatenated

必须首先将字符串转换为列表:

In [257]: alist1 = eval(astr)    # better ast.literal_eval
In [258]: alist1
Out[258]: [[1], [2], array([3, 3, 3]), [2]]
In [259]: np.concatenate(alist1)
Out[259]: array([1, 2, 3, 3, 3, 2])

将字符串作为代码输入与通过input函数输入不同。


推荐阅读