我想連接一個包含不同元素大小的陣列 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)
uj5u.com熱心網友回復:
該input()函式總是回傳一個字串。如果您的輸入類似于1234,則必須撰寫:lst_2=input("PLEASE ENTER THE THING:: ").split('')
uj5u.com熱心網友回復:
好的,更詳細地說,您創建一個串列:
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函式輸入字串不同。
uj5u.com熱心網友回復:
首先,輸入將被視為字串。您需要獲取該字串并將其轉換為串列。這是通過相對于分隔符將其拆分來實作的。最后只需使用np.array從串列創建陣列。np.concatenate用于將已經是陣列的物件放在一起。
import numpy as np
raw_input=input("PLEASE ENTER THE THING:: ")
# here i use space, but anything can be the separator
input_list = raw_input.split(" ")
# dtype is optional, but unless you specify it, it will be `string`
arr = np.array(input_list, dtype=int)
更新:
如果你想要重復元素,正如你所說,你可以給出成對的數字作為輸入,如下所示:
import numpy as np
user_input = input("PLEASE ENTER THE THING:: ")
input_list = user_input.split(",")
print(input_list)
arr = np.concatenate(
[np.repeat(int(pair.split(' ')[0]),
int(pair.split(' ')[1]))
for pair in input_list]
)
print(arr)
# example input: 1 10,2 3,4 4
# output [1 1 1 1 1 1 1 1 1 1 2 2 2 4 4 4 4]
在這里你有用“,”分隔的對,每對中的數字用空格分隔。此腳本將重復該對中的第一個數字與第二個數字指定的次數相同。為了使其作業,請確保在輸入數字時不要在逗號后添加空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324805.html
