คำถามติดแท็ก numpy

NumPy เป็นส่วนขยายการคำนวณทางวิทยาศาสตร์และตัวเลขเป็นภาษาโปรแกรม Python

6
การเก็บข้อมูลใน python ด้วย scipy / numpy
มีวิธีที่มีประสิทธิภาพมากกว่าในการหาค่าเฉลี่ยของอาร์เรย์ในถังขยะที่กำหนดไว้ล่วงหน้าหรือไม่? ตัวอย่างเช่นฉันมีอาร์เรย์ของตัวเลขและอาร์เรย์ที่ตรงกับตำแหน่งเริ่มต้นและจุดสิ้นสุดของ bin ในอาร์เรย์นั้นและฉันต้องการหาค่าเฉลี่ยในถังขยะเหล่านั้นหรือไม่ ฉันมีโค้ดที่ทำด้านล่าง แต่ฉันสงสัยว่าจะตัดทอนและปรับปรุงได้อย่างไร ขอบคุณ. from scipy import * from numpy import * def get_bin_mean(a, b_start, b_end): ind_upper = nonzero(a >= b_start)[0] a_upper = a[ind_upper] a_range = a_upper[nonzero(a_upper < b_end)[0]] mean_val = mean(a_range) return mean_val data = rand(100) bins = linspace(0, 1, 10) binned_data = [] n = …

4
วิธีการรับการคูณเมทริกซ์ที่ชาญฉลาด (ผลิตภัณฑ์ Hadamard) เป็นตัวเลข
ฉันมีเมทริกซ์สองตัว a = np.matrix([[1,2], [3,4]]) b = np.matrix([[5,6], [7,8]]) และฉันต้องการได้ผลิตภัณฑ์ที่เป็นองค์ประกอบอย่าง[[1*5,2*6], [3*7,4*8]]เท่าเทียมกัน [[5,12], [21,32]] ฉันเหนื่อย print(np.dot(a,b)) และ print(a*b) แต่ทั้งสองให้ผลลัพธ์ [[19 22], [43 50]] ซึ่งเป็นผลิตภัณฑ์เมทริกซ์ไม่ใช่ผลิตภัณฑ์ที่เป็นองค์ประกอบ ฉันจะรับผลิตภัณฑ์ที่มีองค์ประกอบ (หรือที่เรียกว่าผลิตภัณฑ์ Hadamard) โดยใช้ฟังก์ชันในตัวได้อย่างไร

3
จะแปลงรายการอาร์เรย์ numpy เป็นอาร์เรย์ numpy เดียวได้อย่างไร
สมมติว่าฉันมี; LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])] # inner lists are numpy arrays ฉันพยายามที่จะแปลง array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]) ฉันกำลังแก้ปัญหาโดยการวนซ้ำบน vstack ตอนนี้ แต่มันช้ามากสำหรับ LIST ขนาดใหญ่โดยเฉพาะ คุณแนะนำอะไรสำหรับวิธีที่มีประสิทธิภาพสูงสุด
110 python  list  numpy 


7
วิธีการวนซ้ำคอลัมน์อาร์เรย์?
สมมติว่าฉันมีอาร์เรย์และ mxn ฉันต้องการส่งแต่ละคอลัมน์ของอาร์เรย์นี้ไปยังฟังก์ชันเพื่อดำเนินการบางอย่างกับคอลัมน์ทั้งหมด ฉันจะวนซ้ำคอลัมน์ของอาร์เรย์ได้อย่างไร ตัวอย่างเช่นฉันมีอาร์เรย์ 4 x 3 เช่น 1 99 2 2 14 5 3 12 7 4 43 1 for column in array: some_function(column) โดยที่คอลัมน์จะเป็น "1,2,3,4" ในการวนซ้ำครั้งแรก "99,14,12,43" ในครั้งที่สองและ "2,5,7,1" ในครั้งที่สาม
109 python  loops  numpy 

5
ตรวจสอบว่าอาร์เรย์ NumPy มีค่าที่ไม่ใช่ตัวเลขอย่างน้อยหนึ่งค่าหรือไม่?
ฉันต้องเขียนฟังก์ชันที่จะตรวจสอบว่าอินพุตมีค่าอย่างน้อยหนึ่งค่าที่ไม่ใช่ตัวเลขหรือไม่ หากพบค่าที่ไม่ใช่ตัวเลขฉันจะเพิ่มข้อผิดพลาด (เนื่องจากการคำนวณควรส่งคืนค่าตัวเลขเท่านั้น) ไม่ทราบจำนวนมิติของอาร์เรย์อินพุตล่วงหน้า - ฟังก์ชันควรให้ค่าที่ถูกต้องโดยไม่คำนึงถึง ndim ในฐานะที่เป็นความซับซ้อนเพิ่มเติมอินพุตอาจเป็นลูกลอยเดียวหรือnumpy.float64หรือแม้แต่บอลคี่เช่นอาร์เรย์ศูนย์มิติ วิธีที่ชัดเจนในการแก้ปัญหานี้คือการเขียนฟังก์ชันแบบวนซ้ำซึ่งจะวนซ้ำบนทุกออบเจ็กต์ที่ทำซ้ำได้ในอาร์เรย์จนกว่าจะพบสิ่งที่ไม่ใช่อิเทราบี จะใช้numpy.isnan()ฟังก์ชันนี้กับทุกออบเจ็กต์ที่ไม่สามารถทำซ้ำได้ หากพบค่าที่ไม่ใช่ตัวเลขอย่างน้อยหนึ่งค่าฟังก์ชันจะส่งคืน False ทันที มิฉะนั้นหากค่าทั้งหมดในการทำซ้ำเป็นตัวเลขจะส่งกลับ True ในที่สุด ใช้งานได้ดี แต่ค่อนข้างช้าและฉันคาดหวังว่าNumPyจะมีวิธีที่ดีกว่านี้มาก ทางเลือกอื่นที่เร็วกว่าและมึนงงคืออะไร? นี่คือต้นแบบของฉัน: def contains_nan( myarray ): """ @param myarray : An n-dimensional array or a single float @type myarray : numpy.ndarray, numpy.array, float @returns: bool Returns true if myarray is numeric or …
109 python  numpy 

5
แปลง numpy array เป็น tuple
หมายเหตุ:สิ่งนี้กำลังขอการย้อนกลับของการแปลง tuple-to-array ตามปกติ ฉันต้องส่งอาร์กิวเมนต์ไปยังฟังก์ชัน (wrap c ++) เป็นทูเพิลที่ซ้อนกัน ตัวอย่างเช่นงานต่อไปนี้ X = MyFunction( ((2,2),(2,-2)) ) ในขณะที่สิ่งต่อไปนี้ทำไม่ได้ X = MyFunction( numpy.array(((2,2),(2,-2))) ) X = MyFunction( [[2,2],[2,-2]] ) น่าเสียดายที่อาร์กิวเมนต์ที่ฉันต้องการใช้เป็นอาร์เรย์ที่เป็นตัวเลข อาร์เรย์นั้นมีขนาด 2xN เสมอสำหรับ N บางตัวซึ่งอาจมีขนาดค่อนข้างใหญ่ มีวิธีง่ายๆในการแปลงเป็นทูเปิลหรือไม่? ฉันรู้ว่าฉันสามารถวนซ้ำสร้างทูเพิลใหม่ได้ แต่ต้องการถ้ามีการเข้าถึงที่ดีที่อาร์เรย์ numpy ให้ ถ้าเป็นไปไม่ได้ที่จะทำสิ่งนี้ให้ดีเท่าที่ฉันหวังไว้วิธีใดที่สวยที่สุดในการทำโดยการวนลูปหรืออะไรก็ตาม
108 python  numpy 

3
การกำหนดอาร์เรย์ที่เป็นตัวเลขพร้อมสำเนา
ตัวอย่างเช่นถ้าเรามีnumpyอาร์เรย์Aและเราต้องการnumpyอาร์เรย์ที่Bมีองค์ประกอบเดียวกัน อะไรคือความแตกต่างระหว่างวิธีการต่อไปนี้ (ดูด้านล่าง)? หน่วยความจำเพิ่มเติมจะถูกจัดสรรเมื่อใดและเมื่อใด B = A B[:] = A(เช่นเดียวกับB[:]=A[:]?) numpy.copy(B, A)
108 python  arrays  numpy 

2
อะไรคือความแตกต่างระหว่างอาร์เรย์ที่ต่อเนื่องกันและไม่ต่อเนื่องกัน?
ในคู่มือ numpyเกี่ยวกับฟังก์ชัน reshape () ระบุว่า >>> a = np.zeros((10, 2)) # A transpose make the array non-contiguous >>> b = a.T # Taking a view makes it possible to modify the shape without modifying the # initial object. >>> c = b.view() >>> c.shape = (20) AttributeError: incompatible shape for …
108 python  arrays  numpy  memory 

4
Numpy isnan () ล้มเหลวในอาร์เรย์ของโฟลต (จากฐานข้อมูลแพนด้าใช้)
ฉันมีอาร์เรย์ของโฟลต (ตัวเลขปกติ, nans บางตัว) ที่ออกมาจากการใช้กับดาต้าเฟรมของแพนด้า ด้วยเหตุผลบางประการ numpy.isnan ล้มเหลวในอาร์เรย์นี้อย่างไรก็ตามตามที่แสดงด้านล่างแต่ละองค์ประกอบเป็นแบบลอย numpy.isnan ทำงานอย่างถูกต้องในแต่ละองค์ประกอบประเภทของตัวแปรคืออาร์เรย์จำนวนนับ เกิดอะไรขึ้น?! set([type(x) for x in tester]) Out[59]: {float} tester Out[60]: array([-0.7000000000000001, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, …
108 python  arrays  numpy  pandas 

5
ฮิสโตแกรม Matplotlib
ผมจึงมีปัญหาเล็กน้อย ฉันมีชุดข้อมูลใน scipy ที่อยู่ในรูปแบบฮิสโตแกรมแล้วดังนั้นฉันจึงมีศูนย์กลางของถังขยะและจำนวนเหตุการณ์ต่อถัง ตอนนี้ฉันจะพล็อตเป็นฮิสโตแกรมได้อย่างไร ฉันพยายามแค่ทำ bins, n=hist() แต่มันไม่เป็นเช่นนั้น ข้อเสนอแนะใด ๆ

4
การเปรียบเทียบ (python เทียบกับ c ++ โดยใช้ BLAS) และ (numpy)
ฉันต้องการเขียนโปรแกรมที่ใช้ประโยชน์จากฟังก์ชันพีชคณิตเชิงเส้น BLAS และ LAPACK อย่างกว้างขวาง เนื่องจากประสิทธิภาพเป็นปัญหาฉันจึงทำการเปรียบเทียบและอยากทราบว่าแนวทางที่ฉันทำนั้นถูกต้องหรือไม่ ฉันมีผู้เข้าแข่งขันสามคนและต้องการทดสอบประสิทธิภาพของพวกเขาด้วยการคูณเมทริกซ์ - เมทริกซ์อย่างง่าย ผู้เข้าแข่งขัน ได้แก่ Numpy ใช้เฉพาะฟังก์ชันของdot. Python เรียกฟังก์ชัน BLAS ผ่านวัตถุที่ใช้ร่วมกัน C ++ เรียกฟังก์ชัน BLAS ผ่านวัตถุที่ใช้ร่วมกัน สถานการณ์ ฉันใช้การคูณเมทริกซ์ - เมทริกซ์สำหรับมิติiต่างๆ iทำงานจาก 5 ถึง 500 โดยเพิ่มขึ้น 5 และเมทริกซ์m1และm2ตั้งค่าดังนี้: m1 = numpy.random.rand(i,i).astype(numpy.float32) m2 = numpy.random.rand(i,i).astype(numpy.float32) 1. เป็นก้อน รหัสที่ใช้มีลักษณะดังนี้: tNumpy = timeit.Timer("numpy.dot(m1, m2)", "import numpy; from __main__ …
107 c++  python  numpy  benchmarking  blas 

4
dtype ('O') ในหมีแพนด้าคืออะไร?
ฉันมีดาต้าเฟรมเป็นหมีแพนด้าและฉันกำลังพยายามหาว่าค่าของมันคืออะไร ฉันไม่แน่ใจว่าประเภทของคอลัมน์'Test'คืออะไร อย่างไรก็ตามเมื่อฉันวิ่งmyFrame['Test'].dtypeฉันได้รับ; dtype('O') สิ่งนี้หมายความว่า?

13
ฉันจะใช้ numpy.correlate เพื่อทำ autocorrelation ได้อย่างไร
ฉันต้องสร้างความสัมพันธ์อัตโนมัติของชุดตัวเลขซึ่งตามที่ฉันเข้าใจมันเป็นเพียงความสัมพันธ์ของเซตกับตัวมันเอง ฉันได้ลองใช้ฟังก์ชันสหสัมพันธ์ของ numpy แล้ว แต่ฉันไม่เชื่อผลลัพธ์เพราะมันมักจะให้เวกเตอร์โดยที่ตัวเลขแรกไม่ได้ใหญ่ที่สุดอย่างที่ควรจะเป็น ดังนั้นคำถามนี้เป็นคำถามสองข้อ: กำลังnumpy.correlateทำอะไรกันแน่? ฉันจะใช้มัน (หรืออย่างอื่น) เพื่อสร้างความสัมพันธ์อัตโนมัติได้อย่างไร

4
วิธีบันทึกและโหลดข้อมูล numpy.array () อย่างถูกต้อง?
ฉันสงสัยว่าจะบันทึกและโหลดnumpy.arrayข้อมูลอย่างถูกต้องได้อย่างไร ตอนนี้ฉันใช้numpy.savetxt()วิธีนี้ ตัวอย่างเช่นถ้าฉันมีอาร์เรย์markersซึ่งมีลักษณะดังนี้: ฉันพยายามบันทึกโดยใช้: numpy.savetxt('markers.txt', markers) ในสคริปต์อื่นฉันพยายามเปิดไฟล์ที่บันทึกไว้ก่อนหน้านี้: markers = np.fromfile("markers.txt") และนั่นคือสิ่งที่ฉันได้รับ ... ข้อมูลที่บันทึกไว้ก่อนมีลักษณะดังนี้: 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 แต่เมื่อฉันบันทึกข้อมูลที่โหลดโดยใช้วิธีการเดียวกันคือ. numpy.savetxt()ดูเหมือนว่า: 1.398043286095131769e-76 1.398043286095288860e-76 1.396426376485745879e-76 1.398043286055061908e-76 1.398043286095288860e-76 1.182950697433698368e-76 1.398043275797188953e-76 1.398043286095288860e-76 1.210894289234927752e-99 1.398040649781712473e-76 ผมทำอะไรผิดหรือเปล่า? ปล. ไม่มีการดำเนินการ "หลังเวที" อื่น ๆ ที่ฉันดำเนินการ เพียงแค่บันทึกและโหลดและนั่นคือสิ่งที่ฉันได้รับ ขอบคุณล่วงหน้า.
107 python  arrays  numpy 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.