我正在閱讀Python中的Ndarray documentation,它有以下示例。在Python中切分危險的操作?
A 2維數組大小爲2×3的,4個字節的整數的組成 元素:
:>>> # The element of x in the *second* row, *third* column, namely, 6. >>> x[1, 2]
>>> x = np.array([[1, 2, 3], [4, 5, 6]], np.int32) >>> type(x) <type 'numpy.ndarray'> >>> x.shape (2, 3) >>> x.dtype dtype('int32')
陣列可以使用Python容器狀的語法被索引
例如切片可以產生陣列的視圖:
>>> y = x[:,1] >>> y array([2, 5]) >>> y[0] = 9 # this also changes the corresponding element in x >>> y array([9, 5]) >>> x array([[1, 9, 3], [4, 5, 6]])
我有一個MATLAB背景,當我們做y = x[:, 1]
,y
變得鮮明2×1矩陣,在這之後改變y
任何元件產生在原始矩陣x
沒有變化。但是,看起來在Python中更改y
的元素確實會改變原始數組x
。
有人可以評論這個操作是否應該避免?因爲我不想通過操作某些數據部分來意外更改我的原始數據。
不要發佈您的代碼的圖片,發佈您的代碼格式的文本 –
您可以使用' 。copy()'as'y = x [:,1] .copy()' – ZdaR
這只是數組視圖,因此視圖中的部分反映在源代碼中。嘗試複製它。 –