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

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

8
NumPy หรือ Pandas: การรักษาประเภทอาร์เรย์ให้เป็นจำนวนเต็มในขณะที่มีค่า NaN
มีวิธีที่ต้องการเพื่อรักษาชนิดข้อมูลของnumpyอาร์เรย์คงที่เป็นint( int64หรืออะไรก็ตาม) ในขณะที่ยังคงมีองค์ประกอบภายในรายการเป็นnumpy.NaN? โดยเฉพาะอย่างยิ่งฉันกำลังแปลงโครงสร้างข้อมูลภายในเป็น Pandas DataFrame ในโครงสร้างของเราเรามีคอลัมน์ประเภทจำนวนเต็มที่ยังคงมี NaN (แต่ dtype ของคอลัมน์นั้นเป็น int) มันดูเหมือนว่าจะแต่งทุกอย่างตามที่ลอยถ้าเราทำให้เรื่องนี้เป็น DataFrame intแต่เราจะชอบที่จะเป็น คิด? สิ่งที่พยายาม: ฉันพยายามใช้from_records()ฟังก์ชั่นภายใต้ pandas.DataFrame ด้วยcoerce_float=Falseและสิ่งนี้ไม่ได้ช่วย ฉันยังลองใช้ NumPy masked arrays ด้วย NaN fill_value ซึ่งใช้งานไม่ได้ สิ่งเหล่านี้ทำให้ชนิดข้อมูลคอลัมน์กลายเป็นแบบลอย

4
ปราบปรามสัญกรณ์ทางวิทยาศาสตร์เป็นจำนวนมากเมื่อสร้างอาร์เรย์จากรายการซ้อน
ฉันมีรายการ Python แบบซ้อนที่มีลักษณะดังนี้: my_list = [[3.74, 5162, 13683628846.64, 12783387559.86, 1.81], [9.55, 116, 189688622.37, 260332262.0, 1.97], [2.2, 768, 6004865.13, 5759960.98, 1.21], [3.74, 4062, 3263822121.39, 3066869087.9, 1.93], [1.91, 474, 44555062.72, 44555062.72, 0.41], [5.8, 5006, 8254968918.1, 7446788272.74, 3.25], [4.5, 7887, 30078971595.46, 27814989471.31, 2.18], [7.03, 116, 66252511.46, 81109291.0, 1.56], [6.52, 116, 47674230.76, 57686991.0, 1.43], …

6
คุณจะได้ขนาดของเวกเตอร์ใน Numpy ได้อย่างไร
ในการรักษาด้วย "มีเพียงวิธีเดียวที่ชัดเจนในการทำ" คุณจะได้ขนาดของเวกเตอร์ (อาร์เรย์ 1D) ใน Numpy ได้อย่างไร def mag(x): return math.sqrt(sum(i**2 for i in x)) ผลงานดังกล่าวข้างต้น แต่ฉันไม่สามารถเชื่อได้ว่าฉันจะต้องระบุฟังก์ชั่นที่น่าสนใจและสำคัญดังกล่าวด้วยตัวเอง
158 python  numpy 

6
วิธีเพิ่มแถวใหม่ไปยังอาร์เรย์ที่ว่างเปล่า
การใช้อาร์เรย์ Python มาตรฐานฉันสามารถทำสิ่งต่อไปนี้: arr = [] arr.append([1,2,3]) arr.append([4,5,6]) # arr is now [[1,2,3],[4,5,6]] อย่างไรก็ตามฉันไม่สามารถทำสิ่งเดียวกันได้ในลักษณะเป็นก้อน ตัวอย่างเช่น: arr = np.array([]) arr = np.append(arr, np.array([1,2,3])) arr = np.append(arr, np.array([4,5,6])) # arr is now [1,2,3,4,5,6] ฉันดูvstackด้วยเช่นกัน แต่เมื่อฉันใช้vstackอาเรย์ที่ว่างเปล่าฉันจะได้รับ: ValueError: all the input array dimensions except for the concatenation axis must match exactly ดังนั้นฉันจะต่อท้ายแถวใหม่ไปยังอาร์เรย์ที่ว่างเปล่าได้อย่างไร?
158 python  numpy  scipy 

8
การติดตั้ง SciPy และ NumPy โดยใช้ pip
ฉันกำลังพยายามสร้างห้องสมุดที่ต้องการในแพ็คเกจที่ฉันกำลังแจกจ่าย มันต้องการทั้งห้องสมุดSciPyและNumPy ขณะที่การพัฒนาผมติดตั้งได้ทั้งการใช้ apt-get install scipy ซึ่งติดตั้ง SciPy 0.9.0 และ NumPy 1.5.1 และทำงานได้ดี ผมอยากจะทำเช่นเดียวกันโดยใช้pip install- เพื่อสามารถระบุการอ้างอิงใน setup.py ของแพคเกจของตัวเอง ปัญหาคือเมื่อฉันพยายาม: pip install 'numpy==1.5.1' มันใช้งานได้ดี แต่แล้ว pip install 'scipy==0.9.0' ล้มเหลวอย่างน่าสังเวชด้วย raise self.notfounderror(self.notfounderror.__doc__) numpy.distutils.system_info.BlasNotFoundError: Blas (http://www.netlib.org/blas/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section …
157 python  numpy  scipy  pip  apt 


7
วิธีการทำเส้นโค้งแบบเอ็กซ์โพเนนเชียลและลอการิทึมใน Python? ฉันพบว่าเหมาะสมกับพหุนามเท่านั้น
ฉันมีชุดข้อมูลและฉันต้องการเปรียบเทียบว่าบรรทัดใดอธิบายได้ดีที่สุด (พหุนามคำสั่งต่าง ๆ เลขยกกำลังหรือลอการิทึม) ผมใช้งูหลามและ Numpy polyfit()และเหมาะสมพหุนามมีฟังก์ชั่น แต่ฉันไม่พบฟังก์ชันดังกล่าวสำหรับการยกกำลังแบบเอ็กซ์โปเนนเชียลและลอการิทึม ยังมี .... บ้าง? หรือวิธีการแก้มันเป็นอย่างอื่น?

6
วิธีการแบ่งข้อมูลออกเป็น 3 ชุด (การฝึกอบรมการตรวจสอบความถูกต้องและการทดสอบ)?
ฉันมีดาต้าเฟรมแพนด้าและฉันต้องการแบ่งเป็น 3 ชุดแยกกัน ฉันรู้ว่าการใช้train_test_splitจากsklearn.cross_validationหนึ่งสามารถแบ่งข้อมูลออกเป็นสองชุด (ฝึกและทดสอบ) อย่างไรก็ตามฉันไม่พบวิธีแก้ปัญหาเกี่ยวกับการแบ่งข้อมูลออกเป็นสามชุด โดยเฉพาะอย่างยิ่งฉันต้องการมีดัชนีของข้อมูลต้นฉบับ ฉันรู้ว่าวิธีแก้ปัญหาคือต้องใช้train_test_splitสองครั้งและปรับดัชนี แต่มีวิธีมาตรฐาน / ในตัวมากกว่าในการแบ่งข้อมูลออกเป็น 3 ชุดแทนที่จะเป็น 2 หรือไม่?

3
การใช้งานหน่วยความจำ Python ของอาร์เรย์ที่ไม่ระบุ
ฉันใช้หลามเพื่อวิเคราะห์ไฟล์ขนาดใหญ่และฉันพบปัญหาเรื่องหน่วยความจำดังนั้นฉันจึงใช้ sys.getsizeof () เพื่อพยายามติดตามการใช้งาน แต่พฤติกรรมของอาร์เรย์ numpy นั้นเป็นเรื่องที่แปลกประหลาด นี่คือตัวอย่างที่เกี่ยวข้องกับแผนที่ของอัลเบียนที่ฉันต้องเปิด: >>> import numpy as np >>> import struct >>> from sys import getsizeof >>> f = open('Albedo_map.assoc', 'rb') >>> getsizeof(f) 144 >>> albedo = struct.unpack('%df' % (7200*3600), f.read(7200*3600*4)) >>> getsizeof(albedo) 207360056 >>> albedo = np.array(albedo).reshape(3600,7200) >>> getsizeof(albedo) 80 ยังมีข้อมูลอยู่ แต่ขนาดของวัตถุซึ่งเป็นแผนที่ 3600x7200 พิกเซลได้หายไปจาก …
156 python  numpy  sys 

6
ฉันจะเลือกองค์ประกอบของอาร์เรย์ที่กำหนดเงื่อนไขได้อย่างไร
สมมติว่าฉันมีอาเรx = [5, 2, 3, 1, 4, 5]ย์y = ['f', 'o', 'o', 'b', 'a', 'r']มากมาย ฉันต้องการเลือกองค์ประกอบที่yสอดคล้องกับองค์ประกอบxที่มากกว่า 1 และน้อยกว่า 5 ฉันเหนื่อย x = array([5, 2, 3, 1, 4, 5]) y = array(['f','o','o','b','a','r']) output = y[x > 1 & x < 5] # desired output is ['o','o','a'] แต่มันใช้งานไม่ได้ ฉันจะทำสิ่งนี้ได้อย่างไร
156 python  numpy 

9
เวกเตอร์แถวหรือคอลัมน์แบบโคลนนิ่ง
บางครั้งมันมีประโยชน์ในการ "โคลน" เวกเตอร์แถวหรือคอลัมน์กับเมทริกซ์ โดยการโคลนฉันหมายถึงการแปลงเวกเตอร์แถวเช่น [1,2,3] กลายเป็นเมทริกซ์ [[1,2,3] [1,2,3] [1,2,3] ] หรือเวกเตอร์คอลัมน์เช่น [1 2 3 ] เข้าไป [[1,1,1] [2,2,2] [3,3,3] ] ใน matlab หรือระดับแปดเสียงทำได้ง่ายมาก: x = [1,2,3] a = ones(3,1) * x a = 1 2 3 1 2 3 1 2 3 b = (x') * ones(1,3) b = 1 …


2
เครื่องมือในการแปลงรหัส MATLAB เป็น Python [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันมีรหัส MATLAB จำนวนมากจากวิทยานิพนธ์ MS ของฉันซึ่งตอนนี้ฉันต้องการแปลงเป็น Python (โดยใช้ numpy / scipy และ matplotlib) และแจกจ่ายเป็น open-source ฉันรู้ว่าความคล้ายคลึงกันระหว่างห้องสมุดทางวิทยาศาสตร์ของ MATLAB และ Python และการแปลงด้วยตนเองจะไม่เกินสองสัปดาห์ (หากฉันทำงานต่อทุกวันเป็นระยะเวลาหนึ่ง) ฉันสงสัยว่ามีเครื่องมือใด ๆ ที่สามารถทำการแปลงได้หรือไม่

6
จากอาร์เรย์ ND ถึง 1D
สมมติว่าฉันมีอาร์เรย์a: a = np.array([[1,2,3], [4,5,6]]) array([[1, 2, 3], [4, 5, 6]]) ฉันต้องการแปลงเป็นอาร์เรย์ 1D (เช่นเวกเตอร์คอลัมน์): b = np.reshape(a, (1,np.product(a.shape))) แต่สิ่งนี้กลับมา array([[1, 2, 3, 4, 5, 6]]) ซึ่งไม่เหมือนกับ: array([1, 2, 3, 4, 5, 6]) ฉันสามารถใช้องค์ประกอบแรกของอาร์เรย์นี้เพื่อแปลงเป็นอาร์เรย์ 1D ด้วยตนเอง: b = np.reshape(a, (1,np.product(a.shape)))[0] แต่สิ่งนี้ต้องการให้ฉันทราบว่าอาร์เรย์ดั้งเดิมมีกี่มิติ (และต่อ [0] เมื่อทำงานกับมิติข้อมูลที่สูงขึ้น) มีวิธีที่เป็นอิสระจากมิติในการรับเวกเตอร์คอลัมน์ / แถวจาก ndarray โดยพลการหรือไม่?
150 python  numpy 

9
Numpy matrix ไปยังอาร์เรย์
ฉันกำลังใช้ numpy ฉันมีเมทริกซ์ที่มี 1 คอลัมน์และแถว N และฉันต้องการรับอาร์เรย์จากองค์ประกอบ N ตัวอย่างเช่นถ้าผมมีผมต้องการที่จะได้รับM = matrix([[1], [2], [3], [4]])A = array([1,2,3,4]) A = np.array(M.T)[0]เพื่อให้บรรลุมันผมใช้ ไม่มีใครรู้วิธีที่สง่างามมากขึ้นเพื่อให้ได้ผลลัพธ์เดียวกันหรือไม่ ขอบคุณ!
149 python  arrays  matrix  numpy 

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