numpy陣列互換兩行及賦值問題

2021-08-21 07:21:11 字數 731 閱讀 7816

import numpy as np

a = np.array([[1,1,1],[2,2,2],[3,3,3], [4,4,4]])

tmp = a[1]

a[1] = a[2]

a[2] = tmp

tmp只是a[1]的另乙個名字,它並不是將a[1]複製了之後,就與a[1]無關,或許可理解為一種引用。所以這段**的效果並不能如願互換原始a陣列的第2行和第三行,而是會將2,3行都變成原來的第三行[3,3,3],像這樣:

array([[1, 1, 1],

[3, 3, 3],

[3, 3, 3],

[4, 4, 4]])

那麼如果想互換兩行,應該怎麼操作呢?

有兩種方法,第一種很簡便:

a[[1,2], :] = a[[2,1], :]
這樣就將陣列a的第2行和第3行互換了。或者,寫得更易理解一點,也可以這樣一步一步寫:

tmp = np.copy(a[1])

a[1] = a[2]

a[2] = tmp

這兩種寫法都可以將陣列a的第2,3行互換,即可以得到:

array([[1, 1, 1],

[3, 3, 3],

[2, 2, 2],

[4, 4, 4]])

awk輸出相同列的前兩行和後兩行

要求列印,第一列相同的頭兩行和後兩行 file ax bx 1 ax bx 2 ax bx 1 ax bx 8 ax bx 1 ax bx 3 ax bx 5 cx bx 1 cx bx 0 cx bx 1 cx bx 6 cx bx 9 ex bx 1 ex bx a ex bx 1 ex bx ...

python指令碼前兩行

1.第一行指定直譯器路徑 usr bin env python 詳細說明 usr bin python是告訴作業系統執行這個指令碼的時候,呼叫 usr bin下的python直譯器 usr bin env python這種用法是為了防止使用者沒有將python裝在預設的 usr bin路徑裡。當系統...

5 5的二維陣列,交換兩行

陣列 第8題 描述 編寫乙個函式 int swap int array 5 5 int n,int m 輸入引數是5 5的二維陣列,和n m兩個行下標。功能 判斷n m是否在陣列範圍內,如果不在,則返回0 如果在範圍內,則將n行元素與m行元素交換,並返回1。在main函式中,建立乙個5 5的矩陣,輸...