我有一個 numpy 陣列,想在其中添加一行并修改一列。這是我的陣列:
import numpy as np
small_array = np.array ([[[3., 2., 5.],
[3., 2., 2.]],
[[3., 2., 7.],
[3., 2., 5.]]])
然后,首先我想2.在最后一列添加一個固定值(例如)。我是這樣做的:
chg = 2.
small_array[:,:,-1] = chg
我想做的下一件事是向每個 aubarray 添加另一行。添加的行應該具有相同的第一列和第二列,但第三列應該不同。這次 chg x 2. 應該從第三列中的現有值中減去:
big_array = np.array ([[[3., 2., 7.],
[3., 2., 4.],
[3., 2., 0.]], # this row is added
[[3., 2., 9.],
[3., 2., 7.],
[3., 2., 3.]]]) # this row is added
我非常感謝任何幫助。
uj5u.com熱心網友回復:
我相信您正在尋找的操作是np.concatenate,它可以通過連接兩個陣列來構造一個新陣列。
簡單的例子,我們可以像這樣添加一行零:
>>> np.concatenate((small_array, np.zeros((2,1,3))), axis=1)
array([[[3., 2., 7.],
[3., 2., 4.],
[0., 0., 0.]],
[[3., 2., 9.],
[3., 2., 7.],
[0., 0., 0.]]])
現在,我們可以從每個矩陣的第一行獲取值,而不是零:
>>> np.concatenate((small_array, small_array[:,:1,:]), axis=1)
array([[[3., 2., 7.],
[3., 2., 4.],
[3., 2., 7.]],
[[3., 2., 9.],
[3., 2., 7.],
[3., 2., 9.]]])
此時,您可以根據需要修改新行的第三列中的值。
該axis引數在這里很重要,它告訴concatenate()我要沿哪個軸連接兩個輸入陣列。
檔案:https ://numpy.org/doc/stable/reference/generated/numpy.concatenate.html
uj5u.com熱心網友回復:
你試過使用 numpy.resize 嗎?
https://numpy.org/doc/stable/reference/generated/numpy.resize.html
您將不得不自己決定這是否在計算上過于昂貴,以及 numpy.list 是否對您的目的更有意義。
例如,
import numpy as np
a = np.array([[1,2], [3,4]])
np.resize(a, (3,2))
然后使用索引在最新位置編輯陣列的值
a[2]=[8,9]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/444934.html
上一篇:重新排列物件陣列的最佳方法?
下一篇:檢查嵌套陣列中是否存在值
