เขียนคำสั่งเพื่อสร้างอาเรย์ในตัวแปรชื่อต่อไปนี้ (ไม่ต้องใช้คำสั่งวงวน)
a0
อ่านรายการของจำนวนเต็มจากอินพุตหนึ่งบรรทัด (คั่นด้วยช่องว่าง) มาสร้างอาเรย์หนึ่งมิตืa1
ขนาด 3x4 ทุกช่องมีค่า 0.0a2
ขนาด 4x2 ทุกช่องมีค่า 1a3
ขนาด 4 ช่อง เก็บค่า 2, 13 ,4 , 9a4
ขนาด 1x4 ช่อง เก็บค่า 2, 13, 4, 9a5
ขนาด 100 ช่อง เก็บค่า 1.00, 1.01, 1.02, ...,1.99a6
แทนเมทริกซ์เอกลักษณ์ขนาด 10x10a7
ขนาด 10x7 เก็บ float ไม่ต้องตั้งค่าเริ่มต้น
___inp___ = ['1 3 2 4 1 3 4']
def input():
t = ___inp___.pop(0)
___inp___.append(t)
return t
import numpy as np
import numpy as np
a0 = np.array(input().split(), dtype=int)
a1 = np.zeros((3,4), float)
a2 = np.ones((4,2), int)
a3 = np.array([2,13,4,9])
a4 = np.array([[2,13,4,9]])
a5 = np.arange(1.00, 2.00, 0.01)
a6 = np.identity(10)
a7 = np.ndarray((10,7), float)
Ex().check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")
vars = ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7']
for v in vars:
obj = Ex().check_object(v, missing_msg = "ไม่มีตัวแปร `" + v + "`")
obj.has_equal_value(expr_code = "type("+v+")", incorrect_msg = "`" + v + "` ต้องเป็น numpy array")
obj.has_equal_value(expr_code = v+".dtype", incorrect_msg = "`" + v + "` เก็บข้อมูลที่มีประเภทข้อมูลไม่ตรงตามโจทย์")
if v != 'a7':
obj.has_equal_value(incorrect_msg = "`" + v + "` มีค่าไม่ตรงตามโจทย์")
else:
obj.has_equal_value(expr_code = "a7.shape", incorrect_msg = "`" + v + "` มีขนาดไม่ตรงตามโจทย์")
จงเขียนฟังก์ชัน number_of_rows(M)
และ number_of_cols(M)
ที่รับเมทริกซ์ M และคืนจำนวนแถว กับจำนวนคอลัมน์ของ M ตามลำดับ
import numpy as np
import numpy as np
def number_of_rows(M):
def number_of_cols(M):
import numpy as np
def number_of_rows(M):
return M.shape[0]
def number_of_cols(M):
return M.shape[1]
import numpy as np
def to_str(M):
return "np.array(" + repr(M.tolist()) + ")"
q = "`"
for fname in ["number_of_rows", "number_of_cols"]:
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์หนึ่งตัว')
for i in range(2):
r,c = np.random.randint(3,6), np.random.randint(3,6)
M = to_str(np.ones((r,c),int))
fcall = fname + "(" + M + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fname+q) + " ให้ผลผิด")
ถ้า A เป็นอาเรย์มิติเดียว เช่น A = np.array([1,2,3]) จะได้ A.T เหมือนกับ A
โจทย์ข้อนี้จึงต้องการให้เขียนฟังก์ชัน transpose(A)
ที่รับ A เป็นอาเรย์มิติเดียว แล้วคืนอาเรย์เหมือนกับเป็นทรานโพสของ A เช่น transpose(np.array([1,2,3])
จะได้ np.array([[1],[2],[3]])
(หมายเหตุ: ไม่ต้องใช้วงวน)
import numpy as np
import numpy as np
def transpose(A):
import numpy as np
def transpose(A):
return A.reshape((A.shape[0], 1))
import numpy as np
def to_str(A):
return "np.array(" + repr(A.tolist()) + ")"
q = "`"
fname = "transpose"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์หนึ่งตัว')
func.check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")
A = to_str(np.random.randint(16, size=6))
fcall = fname + "(" + A + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fname+q) + " ให้ผลผิด")
จงเขียนคำสั่งสร้างอาเรย์ชื่อ a
มีขนาด 20x10 เก็บจำนวนเต็ม โดย a[k] มีค่า [10k, 10k+1, 10k+2, ..., 10k+9] (หมายเหตุ: ไม่ต้องใช้วงวน)
import numpy as np
a = np.arange(0,200).reshape((20,10))
v = "a"
obj = Ex().check_object(v, missing_msg = "ไม่มีตัวแปร `" + v + "`")
obj.has_equal_value(expr_code = "type("+v+")", incorrect_msg = "`" + v + "` ต้องเป็น numpy array")
obj.has_equal_value(expr_code = v+".dtype", incorrect_msg = "`" + v + "` เก็บ int")
obj.has_equal_value(incorrect_msg = "`" + v + "` มีค่าไม่ตรงตามโจทย์")
Ex().check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")