numpy --- การดำเนินการอาร์เรย์ที่เข้ากันได้กับ numpy

โมดูลย่อย numpy ของ ulab มอบ API ที่เข้ากันได้กับ numpy โดยสร้างขึ้นรอบ ๆ ชนิดอาร์เรย์ n มิติ ndarray ซึ่งนำชุดย่อยที่คัดสรรแล้วของ CPython numpy มาใช้งาน ได้แก่ การสร้างอาร์เรย์ คณิตศาสตร์เชิงองค์ประกอบ การลดค่าและสถิติ พีชคณิตเชิงเส้น FFT การสร้างตัวเลขสุ่ม การฟิตพหุนาม และ I/O พื้นฐาน

โมดูลย่อยนี้มักถูกนำเข้าด้วยชื่อ np

from ulab import numpy as np

a = np.array([1, 2, 3, 4], dtype=np.float)
b = np.linspace(0, 1, num=5)
c = np.dot(a.reshape((2, 2)), a.reshape((2, 2)))

Each dtype argument is one of the integer constants exposed at module level: numpy.bool, numpy.uint8, numpy.int8, numpy.uint16, numpy.int16, and numpy.float (the default). The result type ndarray refers to numpy.ndarray.

โมดูลย่อย

class ndarray --- อาร์เรย์ n มิติ

ndarray คือคอนเทนเนอร์ n มิติที่รู้จัก dtype ซึ่งเป็นแกนหลักของ numpy / ulab ข้อมูลถูกเก็บในบล็อกต่อเนื่องซึ่งการตีความถูกอธิบายโดยส่วนหัวขนาดเล็ก (dtype, shape, strides, ndim, itemsize) การดำเนินการหลายอย่าง เช่น reshape, transpose, การแบ่งส่วน จะปรับแค่ส่วนหัวจึงมีต้นทุนต่ำ ส่วนเมธอดที่จัดสรรหน่วยความจำใหม่ (copy, flatten, เลขคณิตส่วนใหญ่) จะคืนอาร์เรย์หนาแน่นใหม่

ชนิดเดียวกันนี้เข้าถึงได้ในชื่อ ulab.ndarray, numpy.ndarray และ (ในหน้านี้) เพียงแค่ ndarray

class numpy.ndarray(values: ndarray | bytes | list | tuple, *, dtype: int = numpy.float)

สร้าง ndarray ใหม่

พารามิเตอร์:
  • values -- ข้อมูลต้นทาง อาจเป็น ndarray อื่น (ซึ่งจะถูก deep copy พร้อมแปลงชนิดหาก dtype ต่างกัน) หรือ iterable ใด ๆ ของ MicroPython อาร์เรย์ซ้อนกันหลายมิติจะสร้างอาร์เรย์หลายมิติ โดย iterable ชั้นในทุกตัวต้องมีความยาวเท่ากัน ไม่เช่นนั้นจะเกิด ValueError

  • dtype -- Element type for the new array. One of the type-code integers exposed by numpy (numpy.bool, numpy.uint8, numpy.int8, numpy.uint16, numpy.int16, and numpy.float), or a dtype instance. Defaults to numpy.float.

ฟังก์ชันโรงงาน numpy.array คือวิธีทั่วไปในการสร้าง ndarray ซึ่งจะส่งต่อไปยัง constructor นี้

byteswap(*, inplace: bool = False) ndarray

Swap the byte order of every element. For uint16, int16, and float arrays this reverses the per-element byte order, which is useful when consuming data from peripherals whose endianness does not match the microcontroller's. For single-byte dtypes (bool, uint8, int8) this is a no-op that returns a view or copy.

หาก inplace เป็น False (ค่าเริ่มต้น) จะคืน ndarray ใหม่และต้นฉบับจะไม่ถูกแตะต้อง หาก inplace เป็น True ไบต์ของ self จะถูกสลับในที่และคืน view ของ self

copy() ndarray

คืนสำเนา deep copy แบบหนาแน่นใหม่ของอาร์เรย์ สำเนานี้เป็นเจ้าของข้อมูลของตัวเอง การแก้ไขจะไม่กระทบต้นฉบับ

flatten(*, order: str = 'C') ndarray

คืนสำเนาแบบหนึ่งมิติใหม่ของอาร์เรย์

พารามิเตอร์:

order -- 'C' (ค่าเริ่มต้น) จะท่องข้อมูลตามลำดับ C (แกนสุดท้ายเปลี่ยนเร็วที่สุด) ส่วน 'F' จะท่องตามลำดับ Fortran (แกนแรกเปลี่ยนเร็วที่สุด)

reshape(shape: int | tuple[int, ...]) ndarray

คืน view ของอาร์เรย์ที่มีรูปร่างใหม่ จำนวนองค์ประกอบทั้งหมดต้องไม่เปลี่ยนแปลง ไม่เช่นนั้นจะเกิด ValueError มีให้ใช้เฉพาะเมื่อ ULAB_MAX_DIMS > 1 เทียบเท่ากับการกำหนดค่าให้ shape

sort(*, axis: int | None = -1) None

เรียงลำดับอาร์เรย์ในที่

พารามิเตอร์:

axis -- แกนที่ใช้เรียงลำดับ -1 (ค่าเริ่มต้น) จะเรียงตามแกนสุดท้าย ส่วน None จะ flatten อาร์เรย์ก่อนแล้วจึงเรียง

tobytes() bytearray

คืน bytearray ที่เป็น alias ของบัฟเฟอร์ข้อมูลพื้นฐานของอาร์เรย์ การเขียนผ่าน bytearray ที่คืนมาจะแก้ไขอาร์เรย์ในที่ จะเกิด ValueError หากอาร์เรย์ไม่หนาแน่น (เช่น sliced view)

tolist() list

คืนเนื้อหาของอาร์เรย์เป็น Python list (อาจซ้อนกัน) ความลึกของการซ้อนเท่ากับ ndim

transpose() ndarray

คืน transpose ของอาร์เรย์ (แกนกลับ) สำหรับอาร์เรย์หนึ่งมิติจะคืน self มีให้ใช้เฉพาะเมื่อ ULAB_MAX_DIMS > 1 แอตทริบิวต์ T คือ shorthand ของเมธอดนี้

dtype: dtype | int

ชนิดข้อมูลขององค์ประกอบของอาร์เรย์ คืนอินสแตนซ์ dtype เมื่อ firmware สร้างด้วย ULAB_HAS_DTYPE_OBJECT เปิดใช้งาน มิฉะนั้นจะคืนรหัสชนิดแบบอักขระเดี่ยวเป็นจำนวนเต็ม

flat: flatiter

iterator แบบ flat ที่ yield ทุกองค์ประกอบของอาร์เรย์ตามลำดับ C ต่างจาก flatten() การวนซ้ำ flat จะไม่จัดสรรอาร์เรย์ใหม่

itemsize: int

ขนาดในหน่วยไบต์ขององค์ประกอบอาร์เรย์เดี่ยว ซึ่งได้มาจาก dtype

ndim: int

จำนวนมิติของอาร์เรย์ (ความยาวของ shape)

shape: tuple[int, ...]

ความยาวของอาร์เรย์ตามแต่ละแกน การกำหนด tuple ให้ shape จะ reshape อาร์เรย์ในที่ (เทียบเท่ากับ reshape())

size: int

จำนวนองค์ประกอบทั้งหมดในอาร์เรย์ (ผลคูณของ shape)

strides: tuple[int, ...]

จำนวนไบต์ที่ต้องก้าวในหน่วยความจำตามแต่ละแกนเพื่อไปยังองค์ประกอบถัดไปตามแกนนั้น

T: ndarray

Transpose ของอาร์เรย์ เทียบเท่ากับ transpose()

โอเปอเรเตอร์ที่รองรับ

ndarray instances support the following operators. Binary operators broadcast their operands following standard numpy broadcasting rules and follow numpy's upcasting rules (e.g. uint8 + int8 => int16, uint16 + int16 => float).

Arithmetic (binary): +, -, *, /, //, %, **. Reflected (right-hand) operands and the in-place variants +=, -=, *=, /=, %=, **= are also supported. Both ndarray-with-ndarray and ndarray-with-scalar forms are accepted.

การเปรียบเทียบ: ==, !=, <, <=, >, >= แต่ละตัวคืน boolean ndarray ของรูปร่างที่ broadcast แล้ว

Bitwise (integer arrays only): &, |, ^. Applying these to a float array raises TypeError.

แบบ Unary: + (คืนสำเนา), - (ค่าลบ; กับ dtype ไม่มีเครื่องหมายค่าจะ wrap modulo \(2^N\)), abs() (ค่าสัมบูรณ์เชิงองค์ประกอบ; กับ dtype ไม่มีเครื่องหมายคืนสำเนาโดยไม่คำนวณ), ~ (การกลับบิต เฉพาะ dtype จำนวนเต็ม), len() (คืนความยาวของแกนแรก)

การ index และ slicing: a[i], a[i, j, ...], a[start:stop:step], การ index ด้วย boolean-mask (a[mask]) และการ index ด้วยอาร์เรย์จำนวนเต็ม (fancy) ทั้งหมดรองรับทั้งการอ่านและเขียน

การวนซ้ำ: การวนซ้ำบน ndarray จะ yield sub-array ตามแกนแรก (ทีละองค์ประกอบสำหรับอาร์เรย์ 1 มิติ) ใช้ flat เพื่อวนซ้ำทุกองค์ประกอบ scalar โดยไม่คำนึงถึงจำนวนมิติ

โอเปอเรเตอร์คูณเมทริกซ์ @ ยังไม่ถูกนำมาใช้งาน ให้ใช้ numpy.dot (np.dot(a, b)) แทน

โอเปอเรเตอร์ shift (<<, >>) ยังไม่ถูกนำมาใช้งานในระดับโอเปอเรเตอร์ ให้ใช้ numpy.left_shift และ numpy.right_shift สำหรับการ shift จำนวนเต็มเชิงองค์ประกอบ

การสร้างอาร์เรย์

numpy.array(values: ndarray | list | tuple, *, dtype: int = float) ndarray

สร้าง ndarray ใหม่จาก iterable ซ้อนกันของตัวเลข เป็น constructor สำรองที่เทียบเท่ากับ numpy.ndarray

numpy.arange(start: int | float, stop: int | float | None = None, step: int | float = 1, *, dtype: int | None = None) ndarray

คืนค่าที่เว้นระยะสม่ำเสมอบนช่วงกึ่งเปิด [start, stop) หากมีอาร์กิวเมนต์ตำแหน่งเพียงตัวเดียวจะถือเป็น stop โดย start = 0 หากละ dtype ไว้จะอนุมานจากอินพุต (จำนวนเต็มหาก start, stop, step ทั้งหมดเป็น int และอยู่ในช่วง)

numpy.asarray(a: ndarray | list | tuple, *, dtype: int | None = None) ndarray

หาก a เป็น ndarray ที่มี dtype ตรงกับ dtype (หรือ dtype เป็น None) จะคืน a โดยไม่เปลี่ยนแปลง มิฉะนั้นจะสร้างอาร์เรย์ใหม่ (พร้อมแปลง dtype ที่ร้องขอเมื่อระบุ) Iterable จะถูกแปลงเช่นเดียวกับ numpy.array

numpy.concatenate(arrays: tuple, *, axis: int = 0) ndarray

ต่อลำดับของ ndarray ตาม axis ที่มีอยู่ อาร์เรย์อินพุตทั้งหมดต้องมี dtype, ndim และรูปร่างที่เหมือนกันในทุกแกนนอกจาก axis

numpy.diag(a: ndarray, *, k: int = 0) ndarray

สำหรับ a แบบ 2 มิติ คืนอาร์เรย์ 1 มิติที่ประกอบด้วย diagonal ที่ k สำหรับ a แบบ 1 มิติ คืนอาร์เรย์สี่เหลี่ยมจัตุรัส 2 มิติที่มี a อยู่บน diagonal ที่ k โดย k อาจเป็นบวก (เหนือ diagonal หลัก) หรือลบ (ใต้ diagonal หลัก)

numpy.empty(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

เป็น alias ของ zeros คืนอาร์เรย์ที่เต็มไปด้วยศูนย์ตาม shape และ dtype (ulab จะไม่ปล่อยบัฟเฟอร์ไว้โดยไม่ได้กำหนดค่า)

numpy.eye(N: int, M: int | None = None, k: int = 0, *, dtype: int = float) ndarray

คืนอาร์เรย์ N x M แบบ 2 มิติ (สี่เหลี่ยมจัตุรัส N x N หาก M เป็น None) ที่มีค่าหนึ่งบน diagonal ที่ k และค่าศูนย์ที่อื่น

numpy.frombuffer(buffer: bytes, *, dtype: int = float, count: int = -1, offset: int = 0) ndarray

ตีความออบเจกต์ buffer-protocol เป็น ndarray 1 มิติของ dtype โดย count คือจำนวนรายการที่อ่าน (-1 อ่านทุกรายการที่มี) และ offset ข้ามไบต์จำนวนนั้นที่ต้นบัฟเฟอร์

numpy.full(shape: int | tuple[int, ...], fill_value: int | float | bool, *, dtype: int = float) ndarray

คืนอาร์เรย์ใหม่ตาม shape และ dtype โดยทุกองค์ประกอบตั้งค่าเป็น fill_value

numpy.linspace(start: float, stop: float, num: int = 50, *, endpoint: bool = True, retstep: bool = False, dtype: int = float) ndarray | tuple[ndarray, float]

Return num evenly spaced samples over the closed interval [start, stop] (or half-open if endpoint is False). When retstep is True, return a tuple (samples, step).

numpy.logspace(start: float, stop: float, num: int = 50, *, base: float = 10.0, endpoint: bool = True, dtype: int = float) ndarray

คืน num ตัวอย่างที่เว้นระยะสม่ำเสมอบน log scale โดยผลลัพธ์เริ่มที่ base ** start และสิ้นสุดที่ base ** stop

numpy.meshgrid(*xi: ndarray, indexing: str = 'xy') tuple[ndarray, ...]

คืน tuple ของเมทริกซ์พิกัดจากลำดับของอาร์เรย์พิกัดหนึ่งมิติ เมื่อ indexing เป็น 'xy' (ค่าเริ่มต้น) อินพุตสองตัวแรกจะถูกถือเป็นพิกัด Cartesian และแกนผลลัพธ์จะถูกสลับ เมื่อ 'ij' จะใช้การ index แบบเมทริกซ์ การนำไปใช้สอดคล้องกับ NumPy ที่เทียบเท่าด้วย copy=True และ sparse=False

numpy.ones(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

คืนอาร์เรย์ใหม่ตาม shape และ dtype ที่เต็มไปด้วยค่าหนึ่ง

numpy.zeros(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

คืนอาร์เรย์ใหม่ตาม shape และ dtype ที่เต็มไปด้วยค่าศูนย์

การตรวจสอบ / การพิมพ์

numpy.get_printoptions() dict

คืนตัวเลือกการพิมพ์อาร์เรย์ปัจจุบันเป็น dict ที่มีคีย์ threshold และ edgeitems

numpy.set_printoptions(*, threshold: int | None = None, edgeitems: int | None = None) None

ตั้งค่าตัวเลือกการพิมพ์อาร์เรย์ threshold คือจำนวนสูงสุดขององค์ประกอบอาร์เรย์ที่พิมพ์แบบเต็ม ส่วน edgeitems คือจำนวนรายการที่แสดงที่ปลายแต่ละด้านของแกนเมื่อสรุปอาร์เรย์

numpy.ndinfo(array: ndarray) None

พิมพ์ข้อมูลวินิจฉัย (shape, strides, dtype, itemsize, ...) เกี่ยวกับ array

numpy.size(a: ndarray, *, axis: int | None = None) int

คืนจำนวนองค์ประกอบของ a ตาม axis หาก axis เป็น None จะคืนจำนวนองค์ประกอบทั้งหมด (ผลคูณของ ndarray.shape)

การเปรียบเทียบ

numpy.clip(a: ndarray | int | float, a_min: ndarray | int | float, a_max: ndarray | int | float) ndarray | int | float

ตัดค่าของ a ให้ a_min <= result <= a_max เทียบเท่ากับ maximum(a_min, minimum(a, a_max)) โดยการ broadcast ใช้กฎเดียวกับ minimum

numpy.equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool

x1 == x2 เชิงองค์ประกอบ คืน boolean ndarray (หรือ bool scalar หากอินพุตทั้งสองเป็น scalar) ให้ไว้เพื่อความสามารถในการพกพา โอเปอเรเตอร์ == บนอาร์เรย์ให้ผลลัพธ์เดียวกัน

numpy.not_equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool

x1 != x2 เชิงองค์ประกอบ คู่ตรงข้ามของ boolean กับ equal

numpy.isfinite(x: ndarray | int | float) ndarray | bool

คืนอาร์เรย์ boolean (หรือ scalar) ที่เป็น True เมื่ออินพุตมีค่าจำกัด อินพุตจำนวนเต็มมีค่าจำกัดเสมอ

numpy.isinf(x: ndarray | int | float) ndarray | bool

คืนอาร์เรย์ boolean (หรือ scalar) ที่เป็น True เมื่ออินพุตเป็นอนันต์ อินพุตจำนวนเต็มไม่มีทางเป็นอนันต์

numpy.maximum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float

ค่าสูงสุดเชิงองค์ประกอบของสองอาร์เรย์ / scalar อาร์กิวเมนต์จะถูก broadcast รวมกัน หาก dtype ต่างกัน output จะถูก upcast

numpy.minimum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float

ค่าต่ำสุดเชิงองค์ประกอบของสองอาร์เรย์ / scalar คู่ตรงข้ามกับ maximum

numpy.nonzero(a: ndarray) tuple[ndarray, ...]

คืน tuple ของ ndarray หนึ่งตัวต่อมิติของ a ที่ประกอบด้วย index ขององค์ประกอบที่ไม่ใช่ศูนย์ของ a

numpy.where(condition: ndarray | int | float, x: ndarray | int | float, y: ndarray | int | float) ndarray

คืน ndarray ที่องค์ประกอบมาจาก x ที่ condition เป็น truthy และจาก y ในกรณีอื่น อินพุตสามตัวจะถูก broadcast รวมกัน dtype ผลลัพธ์คือ upcast ของ x และ y

การลดค่าเชิงตัวเลข

numpy.all(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool

ทดสอบว่าองค์ประกอบทั้งหมดตาม axis ประเมินเป็น True หรือไม่ ด้วย axis=None (ค่าเริ่มต้น) อาร์เรย์แบบ flatten จะถูกทดสอบและคืน bool เดี่ยว

numpy.any(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool

ทดสอบว่ามีองค์ประกอบใดตาม axis ประเมินเป็น True หรือไม่ ด้วย axis=None อาร์เรย์แบบ flatten จะถูกทดสอบ

numpy.argmax(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int

คืน index ขององค์ประกอบสูงสุดตาม axis ด้วย axis=None อาร์เรย์จะถูก flatten และคืนจำนวนเต็มเดี่ยว

numpy.argmin(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int

คืน index ขององค์ประกอบต่ำสุดตาม axis ด้วย axis=None อาร์เรย์จะถูก flatten และคืนจำนวนเต็มเดี่ยว

numpy.argsort(a: ndarray, *, axis: int = -1) ndarray

คืน ndarray index จำนวนเต็มไม่มีเครื่องหมายที่รายการจะเรียง a ตามลำดับจากน้อยไปมากตาม axis dtype ผลลัพธ์คือ uint16 ดังนั้นแกนใดก็ตามต้องไม่เกิน 65535 องค์ประกอบ axis=None ไม่รองรับ

numpy.cross(a: ndarray, b: ndarray) ndarray

คืนผลคูณข้ามของสองอาร์เรย์ 1 มิติที่มีความยาว 3

numpy.diff(a: ndarray, *, n: int = 1, axis: int = -1) ndarray

คืนผลต่างไปข้างหน้าแบบไม่ต่อเนื่องลำดับที่ n ของ a ตาม axis โดย n ต้องอยู่ใน 0..9 (stencil การหาอนุพันธ์ถูกเก็บใน int8) ความยาวของ axis จะลดลง n คีย์เวิร์ด prepend และ append ของ numpy ไม่ถูกนำมาใช้งาน

numpy.flip(a: ndarray, *, axis: int | None = None) ndarray

คืนอาร์เรย์ใหม่ที่ลำดับขององค์ประกอบถูกกลับตาม axis ด้วย axis=None อาร์เรย์จะถูกกลับตามทุกแกน

numpy.max(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

คืนองค์ประกอบสูงสุดตาม axis ด้วย axis=None (ค่าเริ่มต้น) อาร์เรย์แบบ flatten จะถูกลดเป็น scalar คีย์เวิร์ด out ของ numpy ไม่ถูกนำมาใช้งาน

numpy.min(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

คืนองค์ประกอบต่ำสุดตาม axis คู่ตรงข้ามกับ max

numpy.mean(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | float

คืนค่าเฉลี่ยเลขคณิตตาม axis ด้วย axis=None (ค่าเริ่มต้น) ค่าเฉลี่ยของอาร์เรย์แบบ flatten จะถูกคืนเป็น float

numpy.median(a: ndarray, *, axis: int | None = None) ndarray | float

คืนค่ามัธยฐานตาม axis ด้วย axis=None อาร์เรย์จะถูก flatten ก่อน dtype ผลลัพธ์เป็น float เสมอ

numpy.roll(a: ndarray, shift: int, *, axis: int | None = None) ndarray

คืน a ที่มีองค์ประกอบถูกหมุน (เลื่อนแบบวนรอบ) shift ตำแหน่ง ด้วย axis=None (ค่าเริ่มต้น) อาร์เรย์จะถูก flatten ก่อน การ shift ค่าลบจะหมุนในทิศทางตรงข้าม

numpy.sort(a: ndarray, *, axis: int = -1) ndarray

คืนสำเนาที่เรียงแล้วของ a ตาม axis โดยใช้ heap sort ด้วย axis=None อาร์เรย์จะถูก flatten ก่อน คีย์เวิร์ด kind และ order ของ numpy ไม่ถูกนำมาใช้งาน

numpy.std(a: ndarray | list | tuple, *, axis: int | None = None, ddof: int = 0, keepdims: bool = False) ndarray | float

คืนส่วนเบี่ยงเบนมาตรฐานตาม axis โดย ddof คือ delta degrees of freedom ตัวหารที่ใช้คือ N - ddof

numpy.sum(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

คืนผลรวมตาม axis ด้วย axis=None ผลรวมของอาร์เรย์แบบ flatten จะถูกคืนเป็น scalar

สถิติ

numpy.bincount(x: ndarray, *, weights: ndarray | None = None, minlength: int | None = None) ndarray

นับจำนวนการเกิดของแต่ละค่าในอาร์เรย์จำนวนเต็มบวกหนึ่งมิติ x dtype ของ x ต้องเป็น uint8 หรือ uint16 หาก weights ถูกระบุ แต่ละรายการของ x จะมีส่วนร่วมตามน้ำหนักที่ตรงกันแทนที่จะเป็น 1 และผลลัพธ์จะมี dtype float มิฉะนั้น output จะมี dtype uint16 หาก minlength ถูกระบุ อาร์เรย์ผลลัพธ์จะมีองค์ประกอบอย่างน้อยจำนวนนั้น (รายการพิเศษเป็นศูนย์)

numpy.trace(m: ndarray) int | float

คืนผลรวมขององค์ประกอบ diagonal ของเมทริกซ์สี่เหลี่ยมจัตุรัส m ชนิดคืนค่าตาม dtype ของ m (อาร์เรย์จำนวนเต็มได้ int อาร์เรย์ float ได้ float)

การแปลง

numpy.compress(condition: ndarray | list | tuple, a: ndarray, *, axis: int | None = None) ndarray

คืน slice ของ a ที่เลือกตาม axis โดย boolean condition ด้วย axis=None จะใช้อาร์เรย์แบบ flatten

numpy.delete(a: ndarray, indices: int | ndarray | list | tuple | range, *, axis: int | None = None) ndarray

คืนสำเนาของ a ที่มีรายการที่ indices ถูกลบออกตาม axis ด้วย axis=None อาร์เรย์จะถูก flatten ก่อน Index ค่าลบนับจากท้ายของ axis โดย indices จะถูกเรียงลำดับภายในก่อนลบ

numpy.dot(m1: ndarray, m2: ndarray) ndarray | float

คืน dot product ของสองอาร์เรย์ สำหรับอาร์เรย์ 1 มิติสองตัวนี่คือ inner product (scalar float) สำหรับอาร์เรย์ 2 มิติคือการคูณเมทริกซ์ โดยมิติด้านในต้องตรงกัน ผลลัพธ์มี dtype float เสมอ

การประมาณ

numpy.interp(x: ndarray, xp: ndarray, fp: ndarray, *, left: float | None = None, right: float | None = None) ndarray

การ interpolation เชิงเส้นหนึ่งมิติ xp ต้องเป็นอาร์เรย์ 1 มิติที่เพิ่มขึ้นแบบ monotonic ของค่าอิสระ fp ประกอบด้วยค่าตาม x คือจุดที่ประเมิน interpolant left และ right แทนที่ค่าที่คืนสำหรับ x < xp[0] และ x > xp[-1] ตามลำดับ (ค่าเริ่มต้น: fp[0] และ fp[-1])

numpy.trapz(y: ndarray, x: ndarray | None = None, dx: float = 1.0) float

Integrate y โดยใช้กฎ trapezoidal แบบ composite หาก x ถูกระบุจะให้ตำแหน่งตัวอย่างที่สอดคล้องกับ y มิฉะนั้นจะใช้ระยะห่าง dx โดย y (และ x) ต้องเป็น 1 มิติ

การเลือก

numpy.take(a: ndarray, indices: ndarray | list | tuple, *, axis: int | None = None, out: ndarray | None = None, mode: str | None = None) ndarray

นำองค์ประกอบจาก a ที่ indices ที่กำหนดตาม axis ด้วย axis=None จะใช้อาร์เรย์แบบ flatten mode เลือกพฤติกรรมนอกขอบเขต: "raise" (ค่าเริ่มต้น -- เกิด ValueError), "wrap" (modulo ความยาวแกน) หรือ "clip" (ตัดให้อยู่ในช่วงที่ถูกต้อง index ค่าลบไม่อนุญาต) หาก out ถูกระบุผลลัพธ์จะถูกเขียนลงในนั้น

ตรรกะระดับบิต

numpy.bitwise_and(x1: ndarray, x2: ndarray) ndarray

AND ระดับบิตเชิงองค์ประกอบของสองอาร์เรย์จำนวนเต็ม รองรับการ broadcast dtype ที่ไม่ใช่จำนวนเต็มจะเกิด exception

numpy.bitwise_or(x1: ndarray, x2: ndarray) ndarray

OR ระดับบิตเชิงองค์ประกอบของสองอาร์เรย์จำนวนเต็ม

numpy.bitwise_xor(x1: ndarray, x2: ndarray) ndarray

XOR ระดับบิตเชิงองค์ประกอบของสองอาร์เรย์จำนวนเต็ม

numpy.left_shift(x1: ndarray, x2: ndarray) ndarray

การ shift ซ้ายระดับบิตเชิงองค์ประกอบของ x1 โดย x2 บิต ทั้งสองอาร์เรย์ต้องมี dtype จำนวนเต็ม

numpy.right_shift(x1: ndarray, x2: ndarray) ndarray

การ shift ขวาระดับบิตเชิงองค์ประกอบของ x1 โดย x2 บิต ทั้งสองอาร์เรย์ต้องมี dtype จำนวนเต็ม

การกรอง

numpy.convolve(a: ndarray, v: ndarray) ndarray

คืน convolution เชิงเส้นแบบไม่ต่อเนื่องของสองอาร์เรย์ 1 มิติ รองรับเฉพาะโหมด "full" คีย์เวิร์ด mode ของ numpy ไม่รับ (โหมดอื่นสามารถได้รับโดยการ slice ผลลัพธ์แบบ full) ความยาว output คือ len(a) + len(v) - 1

พหุนาม

numpy.polyfit(x: ndarray | list | tuple, y: ndarray | list | tuple, deg: int) ndarray
numpy.polyfit(y: ndarray | list | tuple, deg: int) ndarray

ฟิตพหุนามดีกรี deg กับจุดข้อมูล (x, y) โดยวิธีกำลังสองน้อยที่สุดและคืนสัมประสิทธิ์พหุนาม (ดีกรีสูงสุดก่อน) หาก x ถูกละเว้น จะใช้ range(len(y)) เกิด ValueError หากความยาวของ x และ y ต่างกัน

numpy.polyval(p: ndarray | list | tuple, x: ndarray | list | tuple | int | float) ndarray | float

ประเมินพหุนามที่มีสัมประสิทธิ์ p (ดีกรีสูงสุดก่อน) ที่ x หาก x เป็น scalar จะคืน float มิฉะนั้นคืน ndarray

I/O

numpy.load(file: str) ndarray

อ่านอาร์เรย์ที่เคยเขียนด้วย save จาก file (รูปแบบ .npy อิสระจากแพลตฟอร์มของ numpy) Endianness จะถูกแปลงตามต้องการหากลำดับไบต์ของไฟล์ต่างจากโฮสต์

numpy.loadtxt(file: str, *, delimiter: str | None = None, comments: str = '#', max_rows: int = -1, usecols: int | ndarray | list | tuple | None = None, dtype: int = float, skiprows: int = 0) ndarray

อ่านข้อมูลตัวเลขจาก file ข้อความและคืนเป็น ndarray delimiter มีค่าเริ่มต้นเป็น whitespace comments คือ marker comment บรรทัด max_rows จำกัดจำนวนแถวข้อมูลที่อ่าน (-1 สำหรับทั้งหมด) usecols เลือกคอลัมน์ตาม index และ skiprows ข้ามแถวนำจำนวนนั้น หาก dtype ไม่ใช่ float ค่าจะถูกแปลงโดยการปัดเศษ

numpy.save(file: str, a: ndarray) None

บันทึก a ลงใน file ในรูปแบบ .npy อิสระจากแพลตฟอร์มของ numpy

numpy.savetxt(file: str, a: ndarray, *, delimiter: str = ' ', header: str | None = None, footer: str | None = None, comments: str = '# ') None

เขียน a ลงใน file เป็นข้อความ delimiter คั่นค่าภายในแถว header และ footer หากระบุจะถูกเขียนก่อน/หลังข้อมูล โดยแต่ละบรรทัดนำด้วย comments ค่าจะถูกเขียนเป็นทศนิยม

Universal functions

ฟังก์ชันคณิตศาสตร์เชิงองค์ประกอบ แต่ละตัวรับ scalar หรือ ndarray และคืนผลลัพธ์ที่มีรูปร่างตรงกัน (scalar float สำหรับอินพุต scalar, ndarray สำหรับอินพุตอาร์เรย์) เมื่อเรียกด้วย ndarray ผลลัพธ์จะเป็น ndarray ทศนิยมใหม่ คีย์เวิร์ด out ที่เป็นตัวเลือกอาจถูกส่งเพื่อเขียนผลลัพธ์ลงใน ndarray float ที่จัดสรรไว้ล่วงหน้าที่มีขนาดเดียวกัน

numpy.acos(x: ndarray | float, /) ndarray | float

คำนวณ inverse cosine (arc cosine) ของแต่ละองค์ประกอบของ x ผลลัพธ์อยู่ในหน่วยเรเดียน

numpy.acosh(x: ndarray | float, /) ndarray | float

คำนวณ inverse hyperbolic cosine ของแต่ละองค์ประกอบของ x

numpy.arctan2(y: ndarray | float, x: ndarray | float, /) ndarray | float

คำนวณ inverse tangent สองอาร์กิวเมนต์ atan2(y, x) เชิงองค์ประกอบ รองรับการ broadcast ระหว่างอินพุตสองตัว

numpy.around(x: ndarray, /, decimals: int = 0) ndarray

ปัดเศษองค์ประกอบของ ndarray x ให้มี decimals ทศนิยมที่กำหนด อาร์กิวเมนต์แรกต้องเป็น ndarray

numpy.asin(x: ndarray | float, /) ndarray | float

คำนวณ inverse sine (arc sine) ของแต่ละองค์ประกอบของ x ผลลัพธ์อยู่ในหน่วยเรเดียน

numpy.asinh(x: ndarray | float, /) ndarray | float

คำนวณ inverse hyperbolic sine ของแต่ละองค์ประกอบของ x

numpy.atan(x: ndarray | float, /) ndarray | float

คำนวณ inverse tangent (arc tangent) ของแต่ละองค์ประกอบของ x ผลลัพธ์อยู่ในหน่วยเรเดียน

numpy.atanh(x: ndarray | float, /) ndarray | float

คำนวณ inverse hyperbolic tangent ของแต่ละองค์ประกอบของ x

numpy.ceil(x: ndarray | float, /) ndarray | float

คำนวณ ceiling (จำนวนเต็มที่เล็กที่สุดที่ไม่น้อยกว่าค่า) ของแต่ละองค์ประกอบของ x

numpy.cos(x: ndarray | float, /) ndarray | float

คำนวณ cosine ของแต่ละองค์ประกอบของ x (ในหน่วยเรเดียน)

numpy.cosh(x: ndarray | float, /) ndarray | float

คำนวณ hyperbolic cosine ของแต่ละองค์ประกอบของ x

numpy.degrees(x: ndarray | float, /) ndarray | float

แปลงแต่ละองค์ประกอบของ x จากเรเดียนเป็นองศา

numpy.exp(x: ndarray | float, /) ndarray | float

Compute the exponential e**x of each element of x.

numpy.expm1(x: ndarray | float, /) ndarray | float

คำนวณ exp(x) - 1 ของแต่ละองค์ประกอบของ x ด้วยความแม่นยำที่ดีขึ้นใกล้ศูนย์

numpy.floor(x: ndarray | float, /) ndarray | float

คำนวณ floor (จำนวนเต็มที่ใหญ่ที่สุดที่ไม่เกินค่า) ของแต่ละองค์ประกอบของ x

numpy.log(x: ndarray | float, /) ndarray | float

คำนวณ logarithm ธรรมชาติของแต่ละองค์ประกอบของ x

numpy.log10(x: ndarray | float, /) ndarray | float

คำนวณ logarithm ฐาน 10 ของแต่ละองค์ประกอบของ x

numpy.log2(x: ndarray | float, /) ndarray | float

คำนวณ logarithm ฐาน 2 ของแต่ละองค์ประกอบของ x

numpy.radians(x: ndarray | float, /) ndarray | float

แปลงแต่ละองค์ประกอบของ x จากองศาเป็นเรเดียน

numpy.sin(x: ndarray | float, /) ndarray | float

คำนวณ sine ของแต่ละองค์ประกอบของ x (ในหน่วยเรเดียน)

numpy.sinc(x: ndarray | float, /) ndarray | float

คำนวณฟังก์ชัน sinc ที่ normalize แล้ว sin(pi*x) / (pi*x) ของแต่ละองค์ประกอบของ x

numpy.sinh(x: ndarray | float, /) ndarray | float

คำนวณ hyperbolic sine ของแต่ละองค์ประกอบของ x

numpy.sqrt(x: ndarray | float, /, *, dtype: int = float) ndarray | float

Compute the square root of each element of x.

numpy.tan(x: ndarray | float, /) ndarray | float

คำนวณ tangent ของแต่ละองค์ประกอบของ x (ในหน่วยเรเดียน)

numpy.tanh(x: ndarray | float, /) ndarray | float

คำนวณ hyperbolic tangent ของแต่ละองค์ประกอบของ x

numpy.vectorize(f: Callable[[float], float], /, *, otypes: int | None = None) Callable

คืน callable ที่ใช้ฟังก์ชัน Python f เชิงองค์ประกอบกับ scalar, iterable หรือ ndarray โดย otypes เลือก dtype ผลลัพธ์ (ค่าเริ่มต้น float)

ค่าคงที่

numpy.e: float

จำนวน Euler \(e \approx 2.71828\)

numpy.pi: float

\(\pi \approx 3.14159\)

numpy.inf: float

IEEE-754 ค่าอนันต์บวกทศนิยม

numpy.nan: float

IEEE-754 ทศนิยม "ไม่ใช่ตัวเลข"

numpy.bool: int

รหัส dtype สำหรับอาร์เรย์ boolean (เก็บเป็น uint8)

numpy.uint8: int

รหัส dtype สำหรับอาร์เรย์จำนวนเต็มบวก 8 บิต

numpy.int8: int

รหัส dtype สำหรับอาร์เรย์จำนวนเต็มมีเครื่องหมาย 8 บิต

numpy.uint16: int

รหัส dtype สำหรับอาร์เรย์จำนวนเต็มบวก 16 บิต

numpy.int16: int

รหัส dtype สำหรับอาร์เรย์จำนวนเต็มมีเครื่องหมาย 16 บิต

numpy.float: int

รหัส dtype สำหรับอาร์เรย์ทศนิยม 32 บิต