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

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

9
จะตรวจสอบได้อย่างไรว่าคอลัมน์ / ตัวแปรเป็นตัวเลขหรือไม่ใน Pandas / NumPy?
มีวิธีที่ดีกว่าในการพิจารณาว่าตัวแปรในPandasและ / หรือNumPyเป็นnumericหรือไม่? ฉันมีการกำหนดตัวเองdictionaryด้วยdtypesเป็นคีย์และnumeric/ notเป็นค่า
91 python  pandas  numpy 

3
ความแตกต่างระหว่าง a - = b และ a = a - b ใน Python
ฉันเพิ่งใช้โซลูชันนี้เพื่อหาค่าเฉลี่ยทุกๆ N แถวของเมทริกซ์ แม้ว่าโซลูชันจะใช้งานได้โดยทั่วไปฉันมีปัญหาเมื่อใช้กับอาร์เรย์ 7x1 ฉันสังเกตเห็นว่าปัญหาคือเมื่อใช้ตัว-=ดำเนินการ เพื่อเป็นตัวอย่างเล็ก ๆ : import numpy as np a = np.array([1,2,3]) b = np.copy(a) a[1:] -= a[:-1] b[1:] = b[1:] - b[:-1] print a print b ซึ่งผลลัพธ์: [1 1 2] [1 1 1] ดังนั้นในกรณีของอาร์เรย์a -= bจะให้ผลลัพธ์ที่แตกต่างจากa = a - b. ฉันคิดจนถึงตอนนี้ว่าสองวิธีนี้เหมือนกันทุกประการ อะไรคือความแตกต่าง? วิธีการที่ฉันพูดถึงสำหรับการรวมทุก N แถวในเมทริกซ์นั้นใช้งานได้อย่างไรสำหรับเมทริกซ์ …

2
เปลี่ยนค่าบนแกนกราฟ matplotlib imshow ()
สมมติว่าฉันมีข้อมูลอินพุต: data = np.random.normal(loc=100,scale=10,size=(500,1,32)) hist = np.ones((32,20)) # initialise hist for z in range(32): hist[z],edges = np.histogram(data[:,0,z],bins=np.arange(80,122,2)) ฉันสามารถวางแผนโดยใช้imshow(): plt.imshow(hist,cmap='Reds') รับ: อย่างไรก็ตามค่าแกน x ไม่ตรงกับข้อมูลอินพุต (เช่นค่าเฉลี่ย 100 ช่วง 80 ถึง 122) ดังนั้นฉันต้องการเปลี่ยนแกน x เพื่อแสดงค่าในรูปแบบedges. ฉันเหนื่อย: ax = plt.gca() ax.set_xlabel([80,122]) # range of values in edges ... # this shifts the plot so …

4
การนับจำนวนองค์ประกอบที่ไม่ใช่ NaN ใน numpy ndarray ใน Python
ฉันต้องการคำนวณจำนวนองค์ประกอบที่ไม่ใช่ NaN ในเมทริกซ์ numpy ndarray เราจะทำสิ่งนี้อย่างมีประสิทธิภาพใน Python ได้อย่างไร? นี่คือรหัสง่ายๆของฉันสำหรับการบรรลุสิ่งนี้: import numpy as np def numberOfNonNans(data): count = 0 for i in data: if not np.isnan(i): count += 1 return count มีฟังก์ชันในตัวสำหรับสิ่งนี้เป็นตัวเลขหรือไม่? ประสิทธิภาพเป็นสิ่งสำคัญเพราะฉันกำลังทำการวิเคราะห์ข้อมูลขนาดใหญ่ ขอบคุณสำหรับความช่วยเหลือ!
90 python  numpy  matrix  nan 


6
แชร์อาร์เรย์ Numpy ขนาดใหญ่ที่อ่านอย่างเดียวระหว่างกระบวนการหลายกระบวนการ
ฉันมี SciPy Array (เมทริกซ์) 60GB ฉันต้องแชร์ระหว่างmultiprocessing Processวัตถุมากกว่า5 ชิ้น ฉันเคยเห็น numpy-sharedmem และอ่านการสนทนานี้ในรายการ SciPy ดูเหมือนจะมีสองวิธีคือnumpy-sharedmemใช้ a multiprocessing.RawArray()และแมป NumPy dtypes ถึงctypes ตอนนี้numpy-sharedmemดูเหมือนจะเป็นทางไป แต่ฉันยังไม่เห็นตัวอย่างอ้างอิงที่ดี ฉันไม่ต้องการการล็อกใด ๆ เนื่องจากอาร์เรย์ (จริงๆแล้วคือเมทริกซ์) จะเป็นแบบอ่านอย่างเดียว ตอนนี้เนื่องจากขนาดของมันฉันต้องการหลีกเลี่ยงการทำสำเนา มันเสียงเหมือนวิธีที่ถูกต้องคือการสร้างเพียงสำเนาของอาร์เรย์เป็นsharedmemอาร์เรย์แล้วส่งผ่านไปยังProcessวัตถุ? คำถามเฉพาะสองสามข้อ: อะไรคือวิธีที่ดีที่สุดในการส่งแฮนเดิลแชร์ไปยังProcess()รายการย่อย ฉันต้องการคิวเพื่อส่งอาร์เรย์หนึ่งรอบหรือไม่? ท่อจะดีกว่าไหม? ฉันสามารถส่งเป็นอาร์กิวเมนต์ไปยังProcess()init ของคลาสย่อยได้หรือไม่ (โดยที่ฉันสมมติว่ามันถูกดอง) ในการสนทนาที่ฉันเชื่อมโยงไว้ข้างต้นมีการระบุว่าnumpy-sharedmemไม่ปลอดภัย 64 บิต? ฉันกำลังใช้โครงสร้างบางอย่างที่ไม่สามารถระบุแอดเดรสแบบ 32 บิตได้ มีข้อแลกเปลี่ยนกับRawArray()แนวทางนี้หรือไม่? ช้ากว่า buggier? ฉันต้องการการแมป ctype-to-dtype สำหรับเมธอด numpy-sharedmem หรือไม่? ใครมีตัวอย่างโค้ด OpenSource …

6
การลบแถวในอาร์เรย์ numpy
ฉันมีอาร์เรย์ที่อาจมีลักษณะดังนี้: ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875, 0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]] สังเกตว่าแถวใดแถวหนึ่งมีค่าเป็นศูนย์ในตอนท้าย ฉันต้องการลบแถวใด ๆ ที่มีศูนย์ในขณะที่รักษาแถวที่มีค่าที่ไม่ใช่ศูนย์ในเซลล์ทั้งหมด แต่อาร์เรย์จะมีจำนวนแถวต่างกันทุกครั้งที่มีการเติมข้อมูลและเลขศูนย์จะอยู่คนละแถวในแต่ละครั้ง ฉันได้รับจำนวนองค์ประกอบที่ไม่ใช่ศูนย์ในแต่ละแถวด้วยโค้ดบรรทัดต่อไปนี้: NumNonzeroElementsInRows = (ANOVAInputMatrixValuesArray != 0).sum(1) สำหรับอาร์เรย์ด้านบนNumNonzeroElementsInRowsประกอบด้วย: [5 4] ค่าที่ 5 ระบุว่าค่าที่เป็นไปได้ทั้งหมดในแถว 0 ไม่เป็นศูนย์ในขณะที่ค่าสี่ระบุว่าค่าที่เป็นไปได้ค่าหนึ่งในแถว 1 เป็นศูนย์ ดังนั้นฉันจึงพยายามใช้โค้ดบรรทัดต่อไปนี้เพื่อค้นหาและลบแถวที่มีค่าเป็นศูนย์ for q in range(len(NumNonzeroElementsInRows)): if NumNonzeroElementsInRows[q] < NumNonzeroElementsInRows.max(): p.delete(ANOVAInputMatrixValuesArray, q, axis=0) แต่ด้วยเหตุผลบางประการรหัสนี้ดูเหมือนจะไม่ทำอะไรแม้ว่าการพิมพ์คำสั่งจำนวนมากจะบ่งชี้ว่าตัวแปรทั้งหมดดูเหมือนจะเติมข้อมูลอย่างถูกต้องซึ่งนำไปสู่รหัส ต้องมีวิธีง่ายๆในการ …

8
สร้างอาร์เรย์แบบสุ่มของการลอยระหว่างช่วง
ฉันไม่พบฟังก์ชันในการสร้างอาร์เรย์ของการลอยแบบสุ่มที่มีความยาวที่กำหนดระหว่างช่วงหนึ่ง ฉันได้ดูการสุ่มตัวอย่างแบบสุ่มแต่ดูเหมือนว่าไม่มีฟังก์ชันใดที่จะทำในสิ่งที่ฉันต้องการ random.uniform เข้ามาใกล้ แต่จะส่งกลับเพียงองค์ประกอบเดียวไม่ใช่ตัวเลขเฉพาะ นี่คือสิ่งที่ฉันต้องการ: ran_floats = some_function(low=0.5, high=13.3, size=50) ซึ่งจะกลับอาร์เรย์ของ 50 ลอยที่ไม่ซ้ำกันสุ่ม (เช่น: ซ้ำได้รับอนุญาต) [0.5, 13.3]กระจายอย่างสม่ำเสมอในช่วง มีฟังก์ชั่นดังกล่าวหรือไม่?
90 python  arrays  random  numpy 

6
การคูณในอาร์เรย์จำนวนนับ
ฉันพยายามคูณคำศัพท์แต่ละคำในอาร์เรย์ 2 มิติตามเงื่อนไขที่เกี่ยวข้องในอาร์เรย์ 1D นี่เป็นเรื่องง่ายมากถ้าฉันต้องการคูณทุกคอลัมน์ด้วยอาร์เรย์ 1D ดังที่แสดงในฟังก์ชันnumpy.multiply แต่ผมอยากทำตรงข้ามคูณแต่ละเทอมในแถว กล่าวอีกนัยหนึ่งฉันต้องการคูณ: [1,2,3] [0] [4,5,6] * [1] [7,8,9] [2] และรับ [0,0,0] [4,5,6] [14,16,18] แต่แทนที่จะได้รับ [0,2,6] [0,5,12] [0,8,18] มีใครรู้บ้างว่ามีวิธีที่ยอดเยี่ยมในการทำเช่นนั้นด้วย numpy หรือไม่? ขอบคุณมากอเล็กซ์
89 python  arrays  numpy 

11
วิธีทำให้อาร์เรย์ numpy 2 มิติเป็นปกติใน python less verbose?
ให้อาร์เรย์ตัวเลข 3 คูณ 3 a = numpy.arange(0,27,3).reshape(3,3) # array([[ 0, 3, 6], # [ 9, 12, 15], # [18, 21, 24]]) เพื่อทำให้แถวของอาร์เรย์ 2 มิติเป็นปกติฉันคิดไว้ row_sums = a.sum(axis=1) # array([ 9, 36, 63]) new_matrix = numpy.zeros((3,3)) for i, (row, row_sum) in enumerate(zip(a, row_sums)): new_matrix[i,:] = row / row_sum มันต้องมีวิธีที่ดีกว่านี้ไม่ใช่เหรอ? บางทีการทำให้ชัดเจน: โดยการทำให้เป็นมาตรฐานฉันหมายถึงผลรวมของรายการต่อแถวต้องเป็นหนึ่ง …

5
การถดถอยเชิงเส้นด้วย matplotlib / numpy
ฉันพยายามที่จะสร้างการถดถอยเชิงเส้นในพล็อตที่กระจายผมได้สร้าง แต่ข้อมูลของฉันอยู่ในรูปแบบรายการและตัวอย่างทั้งหมดที่ฉันสามารถหาของใช้จำเป็นต้องใช้polyfit ไม่ยอมรับรายการแม้ว่า ฉันได้ค้นหาสูงและต่ำเกี่ยวกับวิธีการแปลงรายการเป็นอาร์เรย์และดูเหมือนไม่มีอะไรชัดเจน ฉันพลาดอะไรไปรึเปล่า?arangearange ต่อไปนี้ฉันจะใช้รายการจำนวนเต็มเป็นข้อมูลเข้าได้ดีที่สุดpolyfitอย่างไร นี่คือตัวอย่าง polyfit ที่ฉันกำลังติดตาม: from pylab import * x = arange(data) y = arange(data) m,b = polyfit(x, y, 1) plot(x, y, 'yo', x, m*x+b, '--k') show()

1
16331239353195370.0 มีความสำคัญเป็นพิเศษหรือไม่
การใช้import numpy as npฉันสังเกตเห็นว่า np.tan(np.pi/2) ให้หมายเลขในชื่อเรื่องไม่ใช่ np.inf 16331239353195370.0 ฉันอยากรู้เกี่ยวกับตัวเลขนี้ มันเกี่ยวข้องกับพารามิเตอร์ความแม่นยำของเครื่องจักรของระบบหรือไม่? ฉันสามารถคำนวณจากบางสิ่งได้หรือไม่? (ฉันกำลังคิดอะไรบางอย่างที่คล้ายกับsys.float_info) แก้ไข:ผลลัพธ์เดียวกันนี้สามารถทำซ้ำได้ในสภาพแวดล้อมอื่น ๆ เช่น Java, octace, matlab ... การหลอกลวงที่แนะนำไม่ได้อธิบายว่าทำไม

3
เหตุใด numpy std () จึงให้ผลลัพธ์ที่แตกต่างกับ matlab std ()
ฉันพยายามแปลงรหัส matlab เป็น numpy และพบว่า numpy มีผลลัพธ์ที่แตกต่างกับฟังก์ชัน std ใน matlab std([1,3,4,6]) ans = 2.0817 เป็นตัวเลข np.std([1,3,4,6]) 1.8027756377319946 เป็นเรื่องปกติหรือไม่? และควรจัดการกับเรื่องนี้อย่างไร?

12
Numpy: ค้นหาดัชนีขององค์ประกอบภายในช่วง
ฉันมีอาร์เรย์ของตัวเลขจำนวนหนึ่งตัวอย่างเช่น a = np.array([1, 3, 5, 6, 9, 10, 14, 15, 56]) ฉันต้องการค้นหาดัชนีทั้งหมดขององค์ประกอบภายในช่วงเฉพาะ ตัวอย่างเช่นถ้าช่วงคือ (6, 10) คำตอบควรเป็น (3, 4, 5) มีฟังก์ชันในตัวสำหรับทำสิ่งนี้หรือไม่?
88 python  numpy 

3
แยกวันจากค่า numpy.timedelta64
ฉันใช้แพนด้า / python และฉันมีอนุกรมเวลาสองวันที่ s1 และ s2 ซึ่งสร้างขึ้นโดยใช้ฟังก์ชัน 'to_datetime' บนฟิลด์ของ df ที่มีวันที่ / เวลา เมื่อฉันลบ s1 จาก s2 s3 = s2 - s1 ฉันได้รับซีรีส์ s3 ประเภท timedelta64 [ns] 0 385 days, 04:10:36 1 57 days, 22:54:00 2 642 days, 21:15:23 3 615 days, 00:55:44 4 160 days, 22:13:35 5 196 …
87 python  numpy  pandas 

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