我想的函式,其中需要在3個陣列作為參考,然后使具有行作為原始陣列的數目的2維陣列arr, arr2, arr3,然后將其列印格式的陣列max和min它。我如何修改下面的代碼,以便我可以得到下面的預期輸出?
代碼:
import numpy as np
def run(arr, arr2, arr3):
rep = np.array([val[ None ].repeat(len(val), 0) for val in [arr, arr2, arr3]], dtype=object)
printer= [[print(iterator[count:]), max(iterator[count:]), min(iterator[count:])]for count,iterator in enumerate(row)] for row in arr]
run(np.array([12,12,-3,-1,2,1]), np.array([-3,-1,-2,1]), np.array([12,-12]))
預期輸出:
[12, 12, -3, -1, 2, 1] max: 12 min: -3
[12, -3, -1, 2, 1] max: 12 min:-3
[-3, -1, 2, 1] max: 2 min: -3
[-1, 2, 1] max: 2 min: -1
[2, 1] max: 2 min: 1
[1] max: 1 min: 1
[-3, -1, -2, 1] max: 1 min: -3
[-1, -2, 1] max: 1 min: -2
[-2, 1] max: 1 min: -2
[1] max: 1 min: 1
[ 12, -12] max: 12 min: -12
[-12] max: -12 min: -12
uj5u.com熱心網友回復:
如果你確定你只需要三個
def run(arr, arr2, arr3):
[print(arr[i:], f"min={arr[i:].min()}", f"min={arr[i:].max()}") for i in range(len(arr))]
[print(arr2[i:], f"min={arr2[i:].min()}", f"min={arr2[i:].max()}") for i in range(len(arr2))]
[print(arr3[i:], f"min={arr3[i:].min()}", f"min={arr3[i:].max()}") for i in range(len(arr3))]
run(np.array([12,12,-3,-1,2,1]), np.array([-3,-1,-2,1]), np.array([12,-12]))
除此以外
def run(*args):
for arr in args:
[print(arr[i:], f"min={arr[i:].min()}", f"min={arr[i:].max()}") for i in range(len(arr))]
uj5u.com熱心網友回復:
首先,我認為最好寫下您希望函式執行的操作的基本概述。對于您的問題,它似乎可以歸結為 5 個步驟。
- 獲取陣列的最大值和最小值
- 列印陣列,最大值,最小值
- 洗掉第一個列(假設這僅接收一維陣列,例如 [1, 2, 3, 4])
- 回圈將列數== 0
- 對所有 3 個陣列重復
順便說一句,二維陣列是一個如下所示的陣列:
[ [1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4] ]
所以我假設你的意思是你想要一個一維陣列,但如果我錯了,請糾正我。
import numpy as np
def run(arr, arr2, arr3):
for i in range(arr.size): # Loop through array in the range of its size
max, min = np.amax(arr), np.amin(arr) # Get the max and min value of array
print(arr, " max:", max, " min:", min) # Print array, max, min
arr = np.delete(arr, 0) # Remove fist collom of array
for i in range(arr2.size): # Repeat code for arr2
max, min = np.amax(arr2), np.amin(arr2)
print(arr2, " max:", max, " min:", min)
arr2 = np.delete(arr2, 0)
for i in range(arr3.size): # Repear code for arr3
max, min = np.amax(arr3), np.amin(arr3)
print(arr3, " max:", max, " min:", min)
arr3 = np.delete(arr3, 0)
我個人建議您將代碼分解為更簡單的行。這是為了使其更具可讀性,并且它可以正常作業,因為在大多數情況下,當您像這樣撰寫代碼時,它幾乎無法讀取和修復(也使其在大多數情況下運行速度較慢)。另一件事是,您正在傳遞 3 個陣列,但對每個陣列執行相同的操作,因此我建議您只呼叫該函式 3 次,而不是如下所示。
import numpy as np
def run(arr):
for i in range(arr.size): # Loop through array in the range of its size
max, min = np.amax(arr), np.amin(arr) # Get the max and min value of array
print(arr, " max:", max, " min:", min) # Print array, max, min
arr = np.delete(arr, 0) # Remove fist collom of array
run(arr)
run(arr2)
run(arr3)
不過,另一種方法是 args 方式,您可以查看傳入的每個引數,如圖所示。
import numpy as np
def run(*args):
for arr in args: # Loop through all arguments passed
for i in range(arr.size): # Loop through array in the range of its size
max, min = np.amax(arr), np.amin(arr) # Get the max and min value of array
print(arr, " max:", max, " min:", min) # Print array, max, min
arr = np.delete(arr, 0) # Remove fist collom of array
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317016.html
