我撰寫了一個函式來修改 2D NumPy 陣列:
def fun(state,r,c):
state = np.array(state)
state[r][c] = 0
return state
為了測驗它,我使用了這種格式:
state = np.array([[1, 1, 1, 0, 1, 1, 1, 0, 1],[0, 1, 1, 1, 1, 1, 1, 0, 1]])
然而,這個函式也應該處理輸入,其中陣列不是逗號分隔的:
state=
[[1 1 1 1 1]
[1 0 0 0 1]
[0 0 0 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]
該函式如何處理非逗號分隔的 NumPy 陣列輸入?到目前為止,無論我嘗試修復它什么,都會引發 SyntaxError。
非常感謝您的幫助。
uj5u.com熱心網友回復:
小心區分諸如list,array和字串之類的東西- 它們的顯示。
這是您的語法錯誤:
In [412]: state=
...: [[1 1 1 1 1]
...: [1 0 0 0 1]
...: [0 0 0 1 1]
...: [1 1 1 1 1]
...: [1 1 1 1 1]]
File "<ipython-input-412-1d0565808329>", line 1
state=
^
SyntaxError: invalid syntax
那不是有效的python。但它看起來確實像一個陣列、一個字串的列印顯示。
您可以制作多行字串:
In [413]: state="""
...: [[1 1 1 1 1]
...: [1 0 0 0 1]
...: [0 0 0 1 1]
...: [1 1 1 1 1]
...: [1 1 1 1 1]]"""
In [414]: state
Out[414]: '\n[[1 1 1 1 1]\n [1 0 0 0 1]\n [0 0 0 1 1]\n [1 1 1 1 1]\n [1 1 1 1 1]]'
In [415]: type(state)
Out[415]: str
您的第一個案例以串列開頭:
In [417]: state = [[1, 1, 1, 0, 1, 1, 1, 0, 1],[0, 1, 1, 1, 1, 1, 1, 0, 1]]
In [418]: state
Out[418]: [[1, 1, 1, 0, 1, 1, 1, 0, 1], [0, 1, 1, 1, 1, 1, 1, 0, 1]]
In [419]: type(state)
Out[419]: list
由串列組成的陣列:
In [420]: arr = np.array(state)
In [421]: arr
Out[421]:
array([[1, 1, 1, 0, 1, 1, 1, 0, 1],
[0, 1, 1, 1, 1, 1, 1, 0, 1]])
陣列的列印顯示:
In [422]: print(arr)
[[1 1 1 0 1 1 1 0 1]
[0 1 1 1 1 1 1 0 1]]
該列印顯示不用于決議、重新創建陣列。雖然這并非不可能,但我認為初學者不應該去那里。還有更重要的東西要學習。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/394731.html
