NumPy - คู่มือฉบับย่อ

NumPy เป็นแพ็คเกจ Python ย่อมาจาก 'Numerical Python' เป็นไลบรารีที่ประกอบด้วยวัตถุอาร์เรย์หลายมิติและชุดของรูทีนสำหรับการประมวลผลอาร์เรย์

Numericบรรพบุรุษของ NumPy ได้รับการพัฒนาโดย Jim Hugunin นอกจากนี้ยังมีการพัฒนาอีกแพ็คเกจ Numarray โดยมีฟังก์ชันเพิ่มเติมบางอย่าง ในปี 2548 Travis Oliphant ได้สร้างแพ็คเกจ NumPy โดยรวมคุณสมบัติของ Numarray ไว้ในแพ็คเกจตัวเลข มีผู้ร่วมสนับสนุนโครงการโอเพ่นซอร์สนี้มากมาย

การดำเนินการโดยใช้ NumPy

การใช้ NumPy นักพัฒนาสามารถดำเนินการดังต่อไปนี้ -

  • การดำเนินการทางคณิตศาสตร์และตรรกะบนอาร์เรย์

  • การแปลงฟูริเยร์และกิจวัตรสำหรับการจัดการรูปร่าง

  • การดำเนินการที่เกี่ยวข้องกับพีชคณิตเชิงเส้น NumPy มีฟังก์ชันในตัวสำหรับพีชคณิตเชิงเส้นและการสร้างตัวเลขสุ่ม

NumPy - ทดแทน MatLab

NumPy มักใช้ร่วมกับแพ็คเกจเช่น SciPy (Scientific Python) และ Mat−plotlib(การวางแผนไลบรารี) ชุดค่าผสมนี้ใช้กันอย่างแพร่หลายเพื่อทดแทน MatLab ซึ่งเป็นแพลตฟอร์มยอดนิยมสำหรับการคำนวณทางเทคนิค อย่างไรก็ตามทางเลือก Python สำหรับ MatLab ถูกมองว่าเป็นภาษาโปรแกรมที่ทันสมัยและสมบูรณ์มากขึ้น

เป็นโอเพ่นซอร์สซึ่งเป็นข้อได้เปรียบเพิ่มเติมของ NumPy

การแจกแจง Python มาตรฐานไม่ได้มาพร้อมกับโมดูล NumPy ทางเลือกที่มีน้ำหนักเบาคือการติดตั้ง NumPy โดยใช้โปรแกรมติดตั้งแพ็คเกจ Python ยอดนิยมpip.

pip install numpy

วิธีที่ดีที่สุดในการเปิดใช้ NumPy คือการใช้แพ็คเกจไบนารีที่สามารถติดตั้งได้เฉพาะสำหรับระบบปฏิบัติการของคุณ ไบนารีเหล่านี้มีสแต็ก SciPy เต็มรูปแบบ (รวมถึง NumPy, SciPy, matplotlib, IPython, SymPy และแพ็คเกจจมูกพร้อมกับ Core Python)

Windows

อนาคอนดา (จาก https://www.continuum.io) เป็นการแจกจ่าย Python ฟรีสำหรับ SciPy stack นอกจากนี้ยังสามารถใช้ได้กับ Linux และ Mac

หลังคา (https://www.enthought.com/products/canopy/) มีให้บริการฟรีเช่นเดียวกับการจัดจำหน่ายเชิงพาณิชย์ด้วย SciPy stack สำหรับ Windows, Linux และ Mac

Python (x, y): เป็นการแจกจ่าย Python ฟรีด้วย SciPy stack และ Spyder IDE สำหรับ Windows OS (ดาวน์โหลดได้จากhttps://www.python-xy.github.io/)

ลินุกซ์

ตัวจัดการแพ็กเกจของลินุกซ์ดิสทริบิวชันที่เกี่ยวข้องใช้เพื่อติดตั้งแพ็กเกจหนึ่งแพ็กเกจหรือมากกว่าในสแตก SciPy

สำหรับ Ubuntu

sudo apt-get install python-numpy 
python-scipy python-matplotlibipythonipythonnotebook python-pandas 
python-sympy python-nose

สำหรับ Fedora

sudo yum install numpyscipy python-matplotlibipython 
python-pandas sympy python-nose atlas-devel

สร้างจากแหล่งที่มา

ต้องติดตั้ง Core Python (2.6.x, 2.7.x และ 3.2.x เป็นต้นไป) พร้อมกับ distutils และโมดูล zlib ควรเปิดใช้งาน

GNU gcc (4.2 ขึ้นไป) C คอมไพเลอร์ต้องพร้อมใช้งาน

ในการติดตั้ง NumPy ให้รันคำสั่งต่อไปนี้

Python setup.py install

ในการทดสอบว่าโมดูล NumPy ได้รับการติดตั้งอย่างถูกต้องหรือไม่ให้ลองนำเข้าจาก Python prompt

import numpy

หากไม่ได้ติดตั้งข้อความแสดงข้อผิดพลาดต่อไปนี้จะแสดงขึ้น

Traceback (most recent call last): 
   File "<pyshell#0>", line 1, in <module> 
      import numpy 
ImportError: No module named 'numpy'

หรืออีกวิธีหนึ่งคือนำเข้าแพ็คเกจ NumPy โดยใช้ไวยากรณ์ต่อไปนี้ -

import numpy as np

วัตถุที่สำคัญที่สุดที่กำหนดใน NumPy คือประเภทอาร์เรย์ N มิติที่เรียกว่า ndarray. อธิบายถึงการรวบรวมรายการประเภทเดียวกัน รายการในคอลเลกชันสามารถเข้าถึงได้โดยใช้ดัชนีที่อิงศูนย์

ทุกรายการใน ndarray ใช้ขนาดของบล็อกในหน่วยความจำเท่ากัน แต่ละองค์ประกอบใน ndarray เป็นวัตถุของวัตถุประเภทข้อมูล (เรียกว่าdtype).

รายการใด ๆ ที่แยกจากอ็อบเจ็กต์ ndarray (โดยการแบ่งส่วน) จะแสดงโดยออบเจ็กต์ Python ของอาร์เรย์ประเภทสเกลาร์ชนิดหนึ่ง แผนภาพต่อไปนี้แสดงความสัมพันธ์ระหว่าง ndarray วัตถุชนิดข้อมูล (dtype) และประเภทสเกลาร์อาร์เรย์ -

อินสแตนซ์ของคลาส ndarray สามารถสร้างได้โดยรูทีนการสร้างอาร์เรย์ต่างๆที่อธิบายไว้ในบทช่วยสอน ndarray พื้นฐานถูกสร้างขึ้นโดยใช้ฟังก์ชันอาร์เรย์ใน NumPy ดังนี้ -

numpy.array

สร้าง ndarray จากออบเจ็กต์ใด ๆ ที่เปิดเผยส่วนต่อประสานอาร์เรย์หรือจากวิธีการใด ๆ ที่ส่งคืนอาร์เรย์

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

ตัวสร้างข้างต้นรับพารามิเตอร์ต่อไปนี้ -

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

object

ออบเจ็กต์ใด ๆ ที่เปิดเผยวิธีการเชื่อมต่ออาร์เรย์จะส่งกลับอาร์เรย์หรือลำดับ (ซ้อนกัน) ใด ๆ

2

dtype

ประเภทข้อมูลที่ต้องการของอาร์เรย์เป็นทางเลือก

3

copy

ไม่จำเป็น. โดยค่าเริ่มต้น (จริง) วัตถุจะถูกคัดลอก

4

order

C (หลักแถว) หรือ F (คอลัมน์หลัก) หรือ A (ใด ๆ ) (ค่าเริ่มต้น)

5

subok

โดยค่าเริ่มต้นอาร์เรย์ที่ส่งคืนถูกบังคับให้เป็นอาร์เรย์คลาสพื้นฐาน ถ้าเป็นจริงคลาสย่อยจะผ่าน

6

ndmin

ระบุขนาดขั้นต่ำของอาร์เรย์ผลลัพธ์

ลองดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจให้ดีขึ้น

ตัวอย่าง 1

import numpy as np 
a = np.array([1,2,3]) 
print a

ผลลัพธ์มีดังนี้ -

[1, 2, 3]

ตัวอย่าง 2

# more than one dimensions 
import numpy as np 
a = np.array([[1, 2], [3, 4]]) 
print a

ผลลัพธ์มีดังนี้ -

[[1, 2] 
 [3, 4]]

ตัวอย่างที่ 3

# minimum dimensions 
import numpy as np 
a = np.array([1, 2, 3,4,5], ndmin = 2) 
print a

ผลลัพธ์มีดังนี้ -

[[1, 2, 3, 4, 5]]

ตัวอย่างที่ 4

# dtype parameter 
import numpy as np 
a = np.array([1, 2, 3], dtype = complex) 
print a

ผลลัพธ์มีดังนี้ -

[ 1.+0.j,  2.+0.j,  3.+0.j]

ndarrayออบเจ็กต์ประกอบด้วยส่วนหนึ่งมิติของหน่วยความจำคอมพิวเตอร์ที่ต่อเนื่องกันรวมกับโครงร่างการจัดทำดัชนีที่แมปแต่ละรายการกับตำแหน่งในบล็อกหน่วยความจำ บล็อกหน่วยความจำเก็บองค์ประกอบตามลำดับแถวหลัก (สไตล์ C) หรือลำดับคอลัมน์หลัก (สไตล์ FORTRAN หรือ MatLab)

NumPy รองรับประเภทตัวเลขที่หลากหลายมากกว่า Python ตารางต่อไปนี้แสดงประเภทข้อมูลสเกลาร์ต่างๆที่กำหนดไว้ใน NumPy

ซีเนียร์ ประเภทข้อมูลและคำอธิบาย
1

bool_

บูลีน (จริงหรือเท็จ) จัดเก็บเป็นไบต์

2

int_

ประเภทจำนวนเต็มเริ่มต้น (เช่นเดียวกับ C long โดยปกติจะเป็น int64 หรือ int32)

3

intc

เหมือนกับ C int (ปกติคือ int32 หรือ int64)

4

intp

จำนวนเต็มที่ใช้ในการสร้างดัชนี (เช่นเดียวกับ C ssize_t โดยปกติจะเป็น int32 หรือ int64)

5

int8

ไบต์ (-128 ถึง 127)

6

int16

จำนวนเต็ม (-32768 ถึง 32767)

7

int32

จำนวนเต็ม (-2147483648 ถึง 2147483647)

8

int64

จำนวนเต็ม (-9223372036854775808 ถึง 9223372036854775807)

9

uint8

จำนวนเต็มไม่ได้ลงนาม (0 ถึง 255)

10

uint16

จำนวนเต็มที่ไม่ได้ลงชื่อ (0 ถึง 65535)

11

uint32

จำนวนเต็มที่ไม่ได้ลงชื่อ (0 ถึง 4294967295)

12

uint64

จำนวนเต็มที่ไม่ได้ลงชื่อ (0 ถึง 18446744073709551615)

13

float_

ชวเลขสำหรับ float64

14

float16

ลูกลอยที่มีความแม่นยำครึ่งหนึ่ง: บิตเครื่องหมาย, เลขยกกำลัง 5 บิต, แมนทิสซา 10 บิต

15

float32

single precision float: sign bit, 8 bits exponent, 23 bits mantissa

16

float64

double precision float: sign bit, 11 bits exponent, 52 bits mantissa

17

complex_

ชวเลขสำหรับคอมเพล็กซ์ 128

18

complex64

จำนวนเชิงซ้อนแสดงด้วยโฟลต 32 บิตสองตัว (ส่วนประกอบจริงและจินตภาพ)

19

complex128

จำนวนเชิงซ้อนแสดงด้วยโฟลต 64 บิตสองตัว (ส่วนประกอบจริงและจินตภาพ)

ประเภทตัวเลข NumPy คืออินสแตนซ์ของอ็อบเจ็กต์ dtype (data-type) ซึ่งแต่ละชนิดมีลักษณะเฉพาะ dtypes มีให้ใช้งานเป็น np.bool_, np.float32 เป็นต้น

ออบเจ็กต์ประเภทข้อมูล (dtype)

ออบเจ็กต์ประเภทข้อมูลอธิบายการตีความบล็อกหน่วยความจำคงที่ที่สอดคล้องกับอาร์เรย์โดยขึ้นอยู่กับลักษณะต่อไปนี้ -

  • ประเภทข้อมูล (จำนวนเต็มลอยหรือวัตถุ Python)

  • ขนาดของข้อมูล

  • คำสั่งไบต์ (little-endian หรือ big-endian)

  • ในกรณีของประเภทโครงสร้างชื่อของเขตข้อมูลประเภทข้อมูลของแต่ละเขตข้อมูลและส่วนของบล็อกหน่วยความจำที่แต่ละเขตข้อมูลนำมา

  • ถ้าชนิดข้อมูลเป็น subarray รูปร่างและชนิดข้อมูล

ลำดับไบต์จะถูกกำหนดโดยนำหน้า '<' หรือ '>' เป็นชนิดข้อมูล '<' หมายความว่าการเข้ารหัสนั้นมีค่าน้อยที่สุด (มีนัยสำคัญน้อยที่สุดจะถูกเก็บไว้ในที่อยู่ที่เล็กที่สุด) '>' หมายความว่าการเข้ารหัสเป็นแบบ big-endian (ไบต์ที่สำคัญที่สุดถูกเก็บไว้ในที่อยู่ที่เล็กที่สุด)

อ็อบเจ็กต์ dtype ถูกสร้างโดยใช้ไวยากรณ์ต่อไปนี้ -

numpy.dtype(object, align, copy)

พารามิเตอร์คือ -

  • Object - เพื่อแปลงเป็นออบเจ็กต์ประเภทข้อมูล

  • Align - หากเป็นจริงให้เพิ่มช่องว่างภายในเพื่อให้คล้ายกับ C-struct

  • Copy- สร้างสำเนาใหม่ของวัตถุ dtype หากเป็นเท็จผลลัพธ์จะอ้างอิงไปยังออบเจ็กต์ชนิดข้อมูลในตัว

ตัวอย่าง 1

# using array-scalar type 
import numpy as np 
dt = np.dtype(np.int32) 
print dt

ผลลัพธ์มีดังนี้ -

int32

ตัวอย่าง 2

#int8, int16, int32, int64 can be replaced by equivalent string 'i1', 'i2','i4', etc. 
import numpy as np 

dt = np.dtype('i4')
print dt

ผลลัพธ์มีดังนี้ -

int32

ตัวอย่างที่ 3

# using endian notation 
import numpy as np 
dt = np.dtype('>i4') 
print dt

ผลลัพธ์มีดังนี้ -

>i4

ตัวอย่างต่อไปนี้แสดงการใช้ประเภทข้อมูลที่มีโครงสร้าง ที่นี่ชื่อเขตข้อมูลและชนิดข้อมูลสเกลาร์ที่เกี่ยวข้องจะถูกประกาศ

ตัวอย่างที่ 4

# first create structured data type 
import numpy as np 
dt = np.dtype([('age',np.int8)]) 
print dt

ผลลัพธ์มีดังนี้ -

[('age', 'i1')]

ตัวอย่างที่ 5

# now apply it to ndarray object 
import numpy as np 

dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt) 
print a

ผลลัพธ์มีดังนี้ -

[(10,) (20,) (30,)]

ตัวอย่างที่ 6

# file name can be used to access content of age column 
import numpy as np 

dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt) 
print a['age']

ผลลัพธ์มีดังนี้ -

[10 20 30]

ตัวอย่างที่ 7

ตัวอย่างต่อไปนี้กำหนดประเภทข้อมูลที่มีโครงสร้างที่เรียกว่า student ด้วยฟิลด์สตริง 'name', an integer field 'อายุ' และ float field'เครื่องหมาย'. dtype นี้ใช้กับอ็อบเจ็กต์ ndarray

import numpy as np 
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
print student

ผลลัพธ์มีดังนี้ -

[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])

ตัวอย่างที่ 8

import numpy as np 

student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
print a

ผลลัพธ์มีดังนี้ -

[('abc', 21, 50.0), ('xyz', 18, 75.0)]

ข้อมูลในตัวแต่ละประเภทมีรหัสอักขระที่ระบุโดยไม่ซ้ำกัน

  • 'b' - บูลีน

  • 'i' - (ลงชื่อ) จำนวนเต็ม

  • 'u' - จำนวนเต็มไม่ได้ลงนาม

  • 'f' - จุดลอยตัว

  • 'c' - จุดลอยตัวที่ซับซ้อน

  • 'm' - เวลา

  • 'M' - วันที่และเวลา

  • 'O' - (Python) วัตถุ

  • 'S', 'a' - สตริง (byte-)

  • 'U' - Unicode

  • 'V' - ข้อมูลดิบ (โมฆะ)

ในบทนี้เราจะพูดถึงคุณลักษณะอาร์เรย์ต่างๆของ NumPy

ndarray.shape

แอตทริบิวต์อาร์เรย์นี้ส่งคืนทูเพิลที่ประกอบด้วยมิติอาร์เรย์ นอกจากนี้ยังสามารถใช้เพื่อปรับขนาดอาร์เรย์

ตัวอย่าง 1

import numpy as np 
a = np.array([[1,2,3],[4,5,6]]) 
print a.shape

ผลลัพธ์มีดังนี้ -

(2, 3)

ตัวอย่าง 2

# this resizes the ndarray 
import numpy as np 

a = np.array([[1,2,3],[4,5,6]]) 
a.shape = (3,2) 
print a

ผลลัพธ์มีดังนี้ -

[[1, 2] 
 [3, 4] 
 [5, 6]]

ตัวอย่างที่ 3

NumPy ยังมีฟังก์ชัน reshape เพื่อปรับขนาดอาร์เรย์

import numpy as np 
a = np.array([[1,2,3],[4,5,6]]) 
b = a.reshape(3,2) 
print b

ผลลัพธ์มีดังนี้ -

[[1, 2] 
 [3, 4] 
 [5, 6]]

ndarray.ndim

แอตทริบิวต์อาร์เรย์นี้ส่งกลับจำนวนมิติอาร์เรย์

ตัวอย่าง 1

# an array of evenly spaced numbers 
import numpy as np 
a = np.arange(24) 
print a

ผลลัพธ์มีดังนี้ -

[0 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16 17 18 19 20 21 22 23]

ตัวอย่าง 2

# this is one dimensional array 
import numpy as np 
a = np.arange(24) 
a.ndim  

# now reshape it 
b = a.reshape(2,4,3) 
print b 
# b is having three dimensions

ผลลัพธ์มีดังนี้ -

[[[ 0,  1,  2] 
  [ 3,  4,  5] 
  [ 6,  7,  8] 
  [ 9, 10, 11]]  
  [[12, 13, 14] 
   [15, 16, 17]
   [18, 19, 20] 
   [21, 22, 23]]]

numpy.itemsize

แอตทริบิวต์อาร์เรย์นี้ส่งกลับความยาวของแต่ละองค์ประกอบของอาร์เรย์เป็นไบต์

ตัวอย่าง 1

# dtype of array is int8 (1 byte) 
import numpy as np 
x = np.array([1,2,3,4,5], dtype = np.int8) 
print x.itemsize

ผลลัพธ์มีดังนี้ -

1

ตัวอย่าง 2

# dtype of array is now float32 (4 bytes) 
import numpy as np 
x = np.array([1,2,3,4,5], dtype = np.float32) 
print x.itemsize

ผลลัพธ์มีดังนี้ -

4

numpy.flags

อ็อบเจ็กต์ ndarray มีคุณสมบัติดังต่อไปนี้ ค่าปัจจุบันจะถูกส่งกลับโดยฟังก์ชันนี้

ซีเนียร์ คุณสมบัติและคำอธิบาย
1

C_CONTIGUOUS (C)

ข้อมูลอยู่ในเซกเมนต์ต่อเนื่องสไตล์ C เดียว

2

F_CONTIGUOUS (F)

ข้อมูลอยู่ในกลุ่มเดียวที่ต่อเนื่องกันสไตล์ Fortran

3

OWNDATA (O)

อาร์เรย์เป็นเจ้าของหน่วยความจำที่ใช้หรือยืมจากวัตถุอื่น

4

WRITEABLE (W)

พื้นที่ข้อมูลสามารถเขียนถึง การตั้งค่านี้เป็น False จะล็อกข้อมูลทำให้เป็นแบบอ่านอย่างเดียว

5

ALIGNED (A)

ข้อมูลและองค์ประกอบทั้งหมดได้รับการจัดวางอย่างเหมาะสมสำหรับฮาร์ดแวร์

6

UPDATEIFCOPY (U)

อาร์เรย์นี้เป็นสำเนาของอาร์เรย์อื่น ๆ เมื่ออาร์เรย์นี้ถูกยกเลิกการจัดสรรอาร์เรย์พื้นฐานจะถูกอัปเดตด้วยเนื้อหาของอาร์เรย์นี้

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงค่าปัจจุบันของแฟล็ก

import numpy as np 
x = np.array([1,2,3,4,5]) 
print x.flags

ผลลัพธ์มีดังนี้ -

C_CONTIGUOUS : True 
F_CONTIGUOUS : True 
OWNDATA : True 
WRITEABLE : True 
ALIGNED : True 
UPDATEIFCOPY : False

ใหม่ ndarray ออบเจ็กต์สามารถสร้างโดยรูทีนการสร้างอาร์เรย์ใด ๆ ต่อไปนี้หรือใช้ตัวสร้าง ndarray ระดับต่ำ

numpy.empty

สร้างอาร์เรย์ที่ไม่ได้กำหนดค่าเริ่มต้นของรูปร่างและประเภทที่ระบุ ใช้ตัวสร้างต่อไปนี้ -

numpy.empty(shape, dtype = float, order = 'C')

ตัวสร้างรับพารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

Shape

รูปร่างของอาร์เรย์ว่างใน int หรือทูเปิลของ int

2

Dtype

ประเภทข้อมูลเอาต์พุตที่ต้องการ ไม่จำเป็น

3

Order

'C' สำหรับอาร์เรย์หลักแถวสไตล์ C, 'F' สำหรับอาร์เรย์หลักคอลัมน์สไตล์ FORTRAN

ตัวอย่าง

โค้ดต่อไปนี้แสดงตัวอย่างของอาร์เรย์ว่าง

import numpy as np 
x = np.empty([3,2], dtype = int) 
print x

ผลลัพธ์มีดังนี้ -

[[22649312    1701344351] 
 [1818321759  1885959276] 
 [16779776    156368896]]

Note - องค์ประกอบในอาร์เรย์แสดงค่าสุ่มเนื่องจากไม่ได้เริ่มต้น

numpy.zeros

ส่งคืนอาร์เรย์ใหม่ของขนาดที่ระบุซึ่งเต็มไปด้วยศูนย์

numpy.zeros(shape, dtype = float, order = 'C')

ตัวสร้างรับพารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

Shape

รูปร่างของอาร์เรย์ว่างใน int หรือลำดับของ int

2

Dtype

ประเภทข้อมูลเอาต์พุตที่ต้องการ ไม่จำเป็น

3

Order

'C' สำหรับอาร์เรย์หลักแถวสไตล์ C, 'F' สำหรับอาร์เรย์หลักคอลัมน์สไตล์ FORTRAN

ตัวอย่าง 1

# array of five zeros. Default dtype is float 
import numpy as np 
x = np.zeros(5) 
print x

ผลลัพธ์มีดังนี้ -

[ 0.  0.  0.  0.  0.]

ตัวอย่าง 2

import numpy as np 
x = np.zeros((5,), dtype = np.int) 
print x

ตอนนี้ผลลัพธ์จะเป็นดังนี้ -

[0  0  0  0  0]

ตัวอย่างที่ 3

# custom type 
import numpy as np 
x = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'i4')])  
print x

ควรให้ผลลัพธ์ดังต่อไปนี้ -

[[(0,0)(0,0)]
 [(0,0)(0,0)]]

numpy.ones

ส่งคืนอาร์เรย์ใหม่ของขนาดและประเภทที่ระบุซึ่งเต็มไปด้วยอาร์เรย์

numpy.ones(shape, dtype = None, order = 'C')

ตัวสร้างรับพารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

Shape

รูปร่างของอาร์เรย์ว่างใน int หรือทูเปิลของ int

2

Dtype

ประเภทข้อมูลเอาต์พุตที่ต้องการ ไม่จำเป็น

3

Order

'C' สำหรับอาร์เรย์หลักแถวสไตล์ C, 'F' สำหรับอาร์เรย์หลักคอลัมน์สไตล์ FORTRAN

ตัวอย่าง 1

# array of five ones. Default dtype is float 
import numpy as np 
x = np.ones(5) 
print x

ผลลัพธ์มีดังนี้ -

[ 1.  1.  1.  1.  1.]

ตัวอย่าง 2

import numpy as np 
x = np.ones([2,2], dtype = int) 
print x

ตอนนี้ผลลัพธ์จะเป็นดังนี้ -

[[1  1] 
 [1  1]]

ในบทนี้เราจะพูดถึงวิธีการสร้างอาร์เรย์จากข้อมูลที่มีอยู่

numpy.asarray

ฟังก์ชันนี้คล้ายกับ numpy.array ยกเว้นข้อเท็จจริงที่ว่ามีพารามิเตอร์น้อยกว่า รูทีนนี้มีประโยชน์สำหรับการแปลงลำดับ Python เป็น ndarray

numpy.asarray(a, dtype = None, order = None)

ตัวสร้างรับพารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

a

ป้อนข้อมูลในรูปแบบใด ๆ เช่น list, list of tuples, tuples, tuple of tuples หรือ tuple of list

2

dtype

ตามค่าเริ่มต้นชนิดข้อมูลของข้อมูลอินพุตจะถูกนำไปใช้กับ ndarray ที่เป็นผลลัพธ์

3

order

C (หลักแถว) หรือ F (หลักของคอลัมน์) C เป็นค่าเริ่มต้น

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าคุณสามารถใช้ไฟล์ asarray ฟังก์ชัน

ตัวอย่าง 1

# convert list to ndarray 
import numpy as np 

x = [1,2,3] 
a = np.asarray(x) 
print a

ผลลัพธ์จะเป็นดังนี้ -

[1  2  3]

ตัวอย่าง 2

# dtype is set 
import numpy as np 

x = [1,2,3]
a = np.asarray(x, dtype = float) 
print a

ตอนนี้ผลลัพธ์จะเป็นดังนี้ -

[ 1.  2.  3.]

ตัวอย่างที่ 3

# ndarray from tuple 
import numpy as np 

x = (1,2,3) 
a = np.asarray(x) 
print a

ผลลัพธ์จะเป็น -

[1  2  3]

ตัวอย่างที่ 4

# ndarray from list of tuples 
import numpy as np 

x = [(1,2,3),(4,5)] 
a = np.asarray(x) 
print a

ที่นี่ผลลัพธ์จะเป็นดังนี้ -

[(1, 2, 3) (4, 5)]

numpy.frombuffer

ฟังก์ชันนี้ตีความบัฟเฟอร์เป็นอาร์เรย์หนึ่งมิติ อ็อบเจ็กต์ใด ๆ ที่แสดงอินเตอร์เฟสบัฟเฟอร์ถูกใช้เป็นพารามิเตอร์เพื่อส่งคืนไฟล์ndarray.

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

ตัวสร้างรับพารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

buffer

วัตถุใด ๆ ที่แสดงส่วนต่อประสานบัฟเฟอร์

2

dtype

ชนิดข้อมูลของ ndarray ที่ส่งคืน ค่าเริ่มต้นคือลอย

3

count

จำนวนรายการที่จะอ่านค่าเริ่มต้น -1 หมายถึงข้อมูลทั้งหมด

4

offset

ตำแหน่งเริ่มต้นที่จะอ่าน ค่าเริ่มต้นคือ 0

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ frombuffer ฟังก์ชัน

import numpy as np 
s = 'Hello World' 
a = np.frombuffer(s, dtype = 'S1') 
print a

นี่คือผลลัพธ์ -

['H'  'e'  'l'  'l'  'o'  ' '  'W'  'o'  'r'  'l'  'd']

numpy.fromiter

ฟังก์ชันนี้สร้างไฟล์ ndarrayวัตถุจากวัตถุที่ทำซ้ำได้ ฟังก์ชันนี้จะส่งคืนอาร์เรย์หนึ่งมิติใหม่

numpy.fromiter(iterable, dtype, count = -1)

ที่นี่ตัวสร้างใช้พารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

iterable

วัตถุที่ทำซ้ำได้

2

dtype

ชนิดข้อมูลของอาร์เรย์ผลลัพธ์

3

count

จำนวนรายการที่จะอ่านจาก iterator ค่าเริ่มต้นคือ -1 ซึ่งหมายถึงข้อมูลทั้งหมดที่จะอ่าน

ตัวอย่างต่อไปนี้แสดงวิธีการใช้งานในตัว range()ฟังก์ชันเพื่อส่งคืนวัตถุรายการ ตัววนซ้ำของรายการนี้ใช้เพื่อสร้างไฟล์ndarray วัตถุ.

ตัวอย่าง 1

# create list object using range function 
import numpy as np 
list = range(5) 
print list

ผลลัพธ์มีดังนี้ -

[0,  1,  2,  3,  4]

ตัวอย่าง 2

# obtain iterator object from list 
import numpy as np 
list = range(5) 
it = iter(list)  

# use iterator to create ndarray 
x = np.fromiter(it, dtype = float) 
print x

ตอนนี้ผลลัพธ์จะเป็นดังนี้ -

[0.   1.   2.   3.   4.]

ในบทนี้เราจะดูวิธีสร้างอาร์เรย์จากช่วงตัวเลข

numpy.arange

ฟังก์ชันนี้ส่งคืนไฟล์ ndarrayวัตถุที่มีค่าระยะห่างเท่า ๆ กันภายในช่วงที่กำหนด รูปแบบของฟังก์ชันมีดังนี้ -

numpy.arange(start, stop, step, dtype)

ตัวสร้างรับพารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

start

จุดเริ่มต้นของช่วงเวลา หากละเว้นค่าเริ่มต้นคือ 0

2

stop

จุดสิ้นสุดของช่วงเวลา (ไม่รวมตัวเลขนี้)

3

step

ระยะห่างระหว่างค่าเริ่มต้นคือ 1

4

dtype

ชนิดข้อมูลของ ndarray ที่เป็นผลลัพธ์ หากไม่ระบุจะใช้ประเภทข้อมูลอินพุต

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าคุณสามารถใช้ฟังก์ชันนี้ได้อย่างไร

ตัวอย่าง 1

import numpy as np 
x = np.arange(5) 
print x

ผลลัพธ์จะเป็นดังนี้ -

[0  1  2  3  4]

ตัวอย่าง 2

import numpy as np 
# dtype set 
x = np.arange(5, dtype = float)
print x

ที่นี่ผลลัพธ์จะเป็น -

[0.  1.  2.  3.  4.]

ตัวอย่างที่ 3

# start and stop parameters set 
import numpy as np 
x = np.arange(10,20,2) 
print x

ผลลัพธ์มีดังนี้ -

[10  12  14  16  18]

numpy.linspace

ฟังก์ชันนี้คล้ายกับ arange()ฟังก์ชัน ในฟังก์ชันนี้แทนที่จะเป็นขนาดขั้นตอนจะมีการระบุจำนวนค่าที่เว้นระยะเท่า ๆ กันระหว่างช่วงเวลา การใช้งานฟังก์ชั่นนี้มีดังนี้ -

numpy.linspace(start, stop, num, endpoint, retstep, dtype)

ตัวสร้างรับพารามิเตอร์ต่อไปนี้

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

start

ค่าเริ่มต้นของลำดับ

2

stop

ค่าสิ้นสุดของลำดับที่รวมอยู่ในลำดับหากจุดสิ้นสุดตั้งค่าเป็นจริง

3

num

จำนวนตัวอย่างที่เว้นระยะเท่า ๆ กันที่จะสร้าง ค่าเริ่มต้นคือ 50

4

endpoint

เป็นจริงตามค่าเริ่มต้นดังนั้นค่าหยุดจะรวมอยู่ในลำดับ หากเป็นเท็จจะไม่รวมอยู่ด้วย

5

retstep

ถ้าเป็นจริงให้ส่งคืนตัวอย่างและขั้นตอนระหว่างตัวเลขที่ต่อเนื่องกัน

6

dtype

ประเภทข้อมูลของเอาต์พุต ndarray

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งาน linspace ฟังก์ชัน

ตัวอย่าง 1

import numpy as np 
x = np.linspace(10,20,5) 
print x

ผลลัพธ์จะเป็น -

[10.   12.5   15.   17.5  20.]

ตัวอย่าง 2

# endpoint set to false 
import numpy as np 
x = np.linspace(10,20, 5, endpoint = False) 
print x

ผลลัพธ์จะเป็น -

[10.   12.   14.   16.   18.]

ตัวอย่างที่ 3

# find retstep value 
import numpy as np 

x = np.linspace(1,2,5, retstep = True) 
print x 
# retstep here is 0.25

ตอนนี้ผลลัพธ์จะเป็น -

(array([ 1.  ,  1.25,  1.5 ,  1.75,  2.  ]), 0.25)

numpy.logspace

ฟังก์ชันนี้ส่งคืนไฟล์ ndarrayวัตถุที่มีตัวเลขที่เว้นระยะเท่า ๆ กันบนมาตราส่วนบันทึก จุดเริ่มต้นและจุดสิ้นสุดของมาตราส่วนคือดัชนีของฐานโดยทั่วไปคือ 10

numpy.logspace(start, stop, num, endpoint, base, dtype)

พารามิเตอร์ต่อไปนี้กำหนดผลลัพธ์ของ logspace ฟังก์ชัน

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

start

จุดเริ่มต้นของลำดับคือการเริ่มต้นฐาน

2

stop

ค่าสุดท้ายของลำดับคือฐานหยุด

3

num

จำนวนค่าระหว่างช่วง ค่าเริ่มต้นคือ 50

4

endpoint

ถ้าเป็นจริงหยุดเป็นค่าสุดท้ายในช่วง

5

base

ฐานของพื้นที่บันทึกค่าเริ่มต้นคือ 10

6

dtype

ชนิดข้อมูลของอาร์เรย์เอาต์พุต หากไม่ได้กำหนดขึ้นอยู่กับอาร์กิวเมนต์อินพุตอื่น ๆ

ตัวอย่างต่อไปนี้จะช่วยให้คุณเข้าใจไฟล์ logspace ฟังก์ชัน

ตัวอย่าง 1

import numpy as np 
# default base is 10 
a = np.logspace(1.0, 2.0, num = 10) 
print a

ผลลัพธ์จะเป็นดังนี้ -

[ 10.           12.91549665     16.68100537      21.5443469  27.82559402      
  35.93813664   46.41588834     59.94842503      77.42636827    100.    ]

ตัวอย่าง 2

# set base of log space to 2 
import numpy as np 
a = np.logspace(1,10,num = 10, base = 2) 
print a

ตอนนี้ผลลัพธ์จะเป็น -

[ 2.     4.     8.    16.    32.    64.   128.   256.    512.   1024.]

เนื้อหาของอ็อบเจ็กต์ ndarray สามารถเข้าถึงและแก้ไขได้โดยการทำดัชนีหรือแบ่งส่วนเช่นเดียวกับอ็อบเจ็กต์คอนเทนเนอร์ที่สร้างขึ้นใน Python

ดังที่ได้กล่าวไว้ก่อนหน้านี้รายการในวัตถุ ndarray เป็นไปตามดัชนีที่ใช้ศูนย์ มีวิธีการจัดทำดัชนีสามประเภท -field access, basic slicing และ advanced indexing.

การแบ่งส่วนขั้นพื้นฐานเป็นส่วนเสริมของแนวคิดพื้นฐานของ Python ในการแบ่งส่วนเป็น n มิติ วัตถุ Python slice ถูกสร้างขึ้นโดยการให้start, stopและ step พารามิเตอร์ในตัว sliceฟังก์ชัน วัตถุชิ้นนี้ถูกส่งผ่านไปยังอาร์เรย์เพื่อแยกส่วนของอาร์เรย์

ตัวอย่าง 1

import numpy as np 
a = np.arange(10) 
s = slice(2,7,2) 
print a[s]

ผลลัพธ์มีดังนี้ -

[2  4  6]

ในตัวอย่างข้างต้นไฟล์ ndarray วัตถุจัดทำโดย arange()ฟังก์ชัน จากนั้นวัตถุชิ้นจะถูกกำหนดด้วยค่าเริ่มต้นหยุดและขั้นตอนที่ 2, 7 และ 2 ตามลำดับ เมื่อวัตถุชิ้นนี้ถูกส่งไปยัง ndarray ส่วนหนึ่งของมันที่เริ่มต้นด้วยดัชนี 2 ถึง 7 ด้วยขั้นตอนที่ 2 จะถูกหั่นบาง ๆ

ผลลัพธ์เดียวกันนี้สามารถหาได้จากการให้พารามิเตอร์การแบ่งส่วนคั่นด้วยเครื่องหมายจุดคู่: (start: stop: step) โดยตรงกับ ndarray วัตถุ.

ตัวอย่าง 2

import numpy as np 
a = np.arange(10) 
b = a[2:7:2] 
print b

ที่นี่เราจะได้ผลลัพธ์เดียวกัน -

[2  4  6]

หากใส่เพียงพารามิเตอร์เดียวรายการเดียวที่สอดคล้องกับดัชนีจะถูกส่งกลับ หากใส่ a: ไว้ด้านหน้ารายการทั้งหมดจากดัชนีนั้นเป็นต้นไปจะถูกแยกออก หากใช้พารามิเตอร์สองตัว (ด้วย: ระหว่างค่าเหล่านั้น) รายการระหว่างดัชนีทั้งสอง (ไม่รวมดัชนีหยุด) ที่มีขั้นตอนเริ่มต้นจะถูกแบ่งส่วน

ตัวอย่างที่ 3

# slice single item 
import numpy as np 

a = np.arange(10) 
b = a[5] 
print b

ผลลัพธ์มีดังนี้ -

5

ตัวอย่างที่ 4

# slice items starting from index 
import numpy as np 
a = np.arange(10) 
print a[2:]

ตอนนี้ผลลัพธ์จะเป็น -

[2  3  4  5  6  7  8  9]

ตัวอย่างที่ 5

# slice items between indexes 
import numpy as np 
a = np.arange(10) 
print a[2:5]

ที่นี่ผลลัพธ์จะเป็น -

[2  3  4]

คำอธิบายข้างต้นใช้กับหลายมิติ ndarray เกินไป.

ตัวอย่างที่ 6

import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
print a  

# slice items starting from index
print 'Now we will slice the array from the index a[1:]' 
print a[1:]

ผลลัพธ์มีดังนี้ -

[[1 2 3]
 [3 4 5]
 [4 5 6]]

Now we will slice the array from the index a[1:]
[[3 4 5]
 [4 5 6]]

การแบ่งส่วนยังสามารถรวมจุดไข่ปลา (…) เพื่อสร้างทูเพิลที่เลือกที่มีความยาวเท่ากับขนาดของอาร์เรย์ หากใช้จุดไข่ปลาที่ตำแหน่งแถวระบบจะส่งคืน ndarray ที่ประกอบด้วยรายการในแถว

ตัวอย่างที่ 7

# array to begin with 
import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 

print 'Our array is:' 
print a 
print '\n'  

# this returns array of items in the second column 
print 'The items in the second column are:'  
print a[...,1] 
print '\n'  

# Now we will slice all items from the second row 
print 'The items in the second row are:' 
print a[1,...] 
print '\n'  

# Now we will slice all items from column 1 onwards 
print 'The items column 1 onwards are:' 
print a[...,1:]

ผลลัพธ์ของโปรแกรมนี้มีดังนี้ -

Our array is:
[[1 2 3]
 [3 4 5]
 [4 5 6]] 
 
The items in the second column are: 
[2 4 5] 

The items in the second row are:
[3 4 5]

The items column 1 onwards are:
[[2 3]
 [4 5]
 [5 6]]

เป็นไปได้ที่จะทำการเลือกจาก ndarray ที่เป็นลำดับที่ไม่ใช่ทูเพิลอ็อบเจกต์ ndarray ของชนิดข้อมูลจำนวนเต็มหรือบูลีนหรือทูเพิลที่มีอย่างน้อยหนึ่งรายการเป็นอ็อบเจ็กต์ลำดับ การจัดทำดัชนีขั้นสูงจะส่งคืนสำเนาของข้อมูลเสมอ เมื่อเทียบกับสิ่งนี้การแบ่งส่วนจะแสดงเฉพาะมุมมองเท่านั้น

การจัดทำดัชนีขั้นสูงมีสองประเภท - Integer และ Boolean.

การสร้างดัชนีจำนวนเต็ม

กลไกนี้ช่วยในการเลือกรายการใด ๆ โดยพลการในอาร์เรย์ตามดัชนี N มิติ อาร์เรย์จำนวนเต็มแต่ละตัวแทนจำนวนดัชนีในมิตินั้น เมื่อดัชนีประกอบด้วยอาร์เรย์จำนวนเต็มมากเท่าขนาดของ ndarray เป้าหมายมันจะตรงไปตรงมา

ในตัวอย่างต่อไปนี้มีการเลือกองค์ประกอบหนึ่งของคอลัมน์ที่ระบุจากแต่ละแถวของออบเจ็กต์ ndarray ดังนั้นดัชนีแถวจึงมีหมายเลขแถวทั้งหมดและดัชนีคอลัมน์ระบุองค์ประกอบที่จะเลือก

ตัวอย่าง 1

import numpy as np 

x = np.array([[1, 2], [3, 4], [5, 6]]) 
y = x[[0,1,2], [0,1,0]] 
print y

ผลลัพธ์จะเป็นดังนี้ -

[1  4  5]

การเลือกประกอบด้วยองค์ประกอบที่ (0,0), (1,1) และ (2,0) จากอาร์เรย์แรก

ในตัวอย่างต่อไปนี้องค์ประกอบที่วางไว้ที่มุมของอาร์เรย์ 4X3 จะถูกเลือก ดัชนีแถวที่เลือกคือ [0, 0] และ [3,3] ในขณะที่ดัชนีคอลัมน์คือ [0,2] และ [0,2]

ตัวอย่าง 2

import numpy as np 
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]]) 
   
print 'Our array is:' 
print x 
print '\n' 

rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]]) 
y = x[rows,cols] 
   
print 'The corner elements of this array are:' 
print y

ผลลัพธ์ของโปรแกรมนี้มีดังนี้ -

Our array is:                                                                 
[[ 0  1  2]                                                                   
 [ 3  4  5]                                                                   
 [ 6  7  8]                                                                   
 [ 9 10 11]]
 
The corner elements of this array are:                                        
[[ 0  2]                                                                      
 [ 9 11]]

การเลือกผลลัพธ์คือวัตถุ ndarray ที่มีองค์ประกอบมุม

การจัดทำดัชนีขั้นสูงและพื้นฐานสามารถรวมกันได้โดยใช้หนึ่งสไลซ์ (:) หรือจุดไข่ปลา (…) กับอาร์เรย์ดัชนี ตัวอย่างต่อไปนี้ใช้สไลซ์สำหรับแถวและดัชนีขั้นสูงสำหรับคอลัมน์ ผลลัพธ์จะเหมือนกันเมื่อใช้ slice สำหรับทั้งสองอย่าง แต่ดัชนีขั้นสูงส่งผลให้เกิดการคัดลอกและอาจมีเค้าโครงหน่วยความจำที่แตกต่างกัน

ตัวอย่างที่ 3

import numpy as np 
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]]) 

print 'Our array is:' 
print x 
print '\n'  

# slicing 
z = x[1:4,1:3] 

print 'After slicing, our array becomes:' 
print z 
print '\n'  

# using advanced index for column 
y = x[1:4,[1,2]] 

print 'Slicing using advanced index for column:' 
print y

ผลลัพธ์ของโปรแกรมนี้จะเป็นดังนี้ -

Our array is:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8]
 [ 9 10 11]]
 
After slicing, our array becomes:
[[ 4  5]
 [ 7  8]
 [10 11]]

Slicing using advanced index for column:
[[ 4  5]
 [ 7  8]
 [10 11]]

การสร้างดัชนีอาร์เรย์บูลีน

การจัดทำดัชนีขั้นสูงประเภทนี้ใช้เมื่ออ็อบเจ็กต์ผลลัพธ์หมายถึงผลลัพธ์ของการดำเนินการบูลีนเช่นตัวดำเนินการเปรียบเทียบ

ตัวอย่าง 1

ในตัวอย่างนี้รายการที่มากกว่า 5 จะถูกส่งกลับอันเป็นผลมาจากการสร้างดัชนีแบบบูลีน

import numpy as np 
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]]) 

print 'Our array is:' 
print x 
print '\n'  

# Now we will print the items greater than 5 
print 'The items greater than 5 are:' 
print x[x > 5]

ผลลัพธ์ของโปรแกรมนี้จะเป็น -

Our array is: 
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8] 
 [ 9 10 11]] 
 
The items greater than 5 are:
[ 6  7  8  9 10 11]

ตัวอย่าง 2

ในตัวอย่างนี้องค์ประกอบ NaN (ไม่ใช่ตัวเลข) จะถูกละไว้โดยใช้ ~ (ตัวดำเนินการเสริม)

import numpy as np 
a = np.array([np.nan, 1,2,np.nan,3,4,5]) 
print a[~np.isnan(a)]

ผลลัพธ์จะเป็น -

[ 1.   2.   3.   4.   5.]

ตัวอย่างที่ 3

ตัวอย่างต่อไปนี้แสดงวิธีการกรององค์ประกอบที่ไม่ซับซ้อนออกจากอาร์เรย์

import numpy as np 
a = np.array([1, 2+6j, 5, 3.5+5j]) 
print a[np.iscomplex(a)]

ที่นี่ผลลัพธ์มีดังนี้ -

[2.0+6.j  3.5+5.j]

ระยะ broadcastingหมายถึงความสามารถของ NumPy ในการจัดการอาร์เรย์ที่มีรูปร่างต่างกันระหว่างการคำนวณทางคณิตศาสตร์ การคำนวณทางคณิตศาสตร์บนอาร์เรย์มักจะทำกับองค์ประกอบที่เกี่ยวข้อง หากอาร์เรย์สองอาร์เรย์มีรูปร่างเหมือนกันการดำเนินการเหล่านี้จะดำเนินการได้อย่างราบรื่น

ตัวอย่าง 1

import numpy as np 

a = np.array([1,2,3,4]) 
b = np.array([10,20,30,40]) 
c = a * b 
print c

ผลลัพธ์มีดังนี้ -

[10   40   90   160]

หากขนาดของสองอาร์เรย์ไม่เหมือนกันจะไม่สามารถดำเนินการแบบองค์ประกอบต่อองค์ประกอบได้ อย่างไรก็ตามการดำเนินการกับอาร์เรย์ที่มีรูปร่างไม่เหมือนกันยังคงสามารถทำได้ใน NumPy เนื่องจากความสามารถในการแพร่ภาพ อาร์เรย์ที่เล็กกว่าคือbroadcast ให้มีขนาดของอาร์เรย์ที่ใหญ่ขึ้นเพื่อให้มีรูปร่างที่เข้ากันได้

สามารถออกอากาศได้หากปฏิบัติตามกฎต่อไปนี้ -

  • อาร์เรย์ที่มีขนาดเล็กกว่า ndim กว่าอีกตัวหนึ่งจะมี '1' อยู่ข้างหน้า

  • ขนาดในแต่ละมิติของรูปร่างเอาต์พุตสูงสุดของขนาดอินพุตในมิตินั้น

  • สามารถใช้อินพุตในการคำนวณได้หากขนาดในมิติใดมิติหนึ่งตรงกับขนาดเอาต์พุตหรือค่าเท่ากับ 1

  • หากอินพุตมีขนาดมิติเป็น 1 รายการข้อมูลแรกในมิตินั้นจะใช้สำหรับการคำนวณทั้งหมดตามมิตินั้น

มีการกล่าวถึงชุดของอาร์เรย์ broadcastable หากกฎข้างต้นให้ผลลัพธ์ที่ถูกต้องและข้อใดข้อหนึ่งต่อไปนี้เป็นจริง -

  • อาร์เรย์มีรูปร่างเหมือนกันทุกประการ

  • อาร์เรย์มีขนาดเท่ากันและความยาวของแต่ละมิติเป็นความยาวทั่วไปหรือ 1

  • อาร์เรย์ที่มีขนาดน้อยเกินไปอาจมีรูปร่างที่นำหน้าด้วยมิติความยาว 1 ดังนั้นคุณสมบัติที่ระบุไว้ข้างต้นจึงเป็นจริง

โปรแกรมต่อไปนี้แสดงตัวอย่างการแพร่ภาพ

ตัวอย่าง 2

import numpy as np 
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]]) 
b = np.array([1.0,2.0,3.0])  
   
print 'First array:' 
print a 
print '\n'  
   
print 'Second array:' 
print b 
print '\n'  
   
print 'First Array + Second Array' 
print a + b

ผลลัพธ์ของโปรแกรมนี้จะเป็นดังนี้ -

First array:
[[ 0. 0. 0.]
 [ 10. 10. 10.]
 [ 20. 20. 20.]
 [ 30. 30. 30.]]

Second array:
[ 1. 2. 3.]

First Array + Second Array
[[ 1. 2. 3.]
 [ 11. 12. 13.]
 [ 21. 22. 23.]
 [ 31. 32. 33.]]

รูปต่อไปนี้แสดงให้เห็นว่าอาร์เรย์ b ออกอากาศเพื่อให้เข้ากันได้กับ a.

แพ็คเกจ NumPy มีอ็อบเจ็กต์ตัววนซ้ำ numpy.nditer. เป็นอ็อบเจ็กต์ตัววนซ้ำหลายมิติที่มีประสิทธิภาพโดยใช้ซึ่งเป็นไปได้ที่จะวนซ้ำบนอาร์เรย์ แต่ละองค์ประกอบของอาร์เรย์ถูกเยี่ยมชมโดยใช้อินเทอร์เฟซ Iterator มาตรฐานของ Python

ให้เราสร้างอาร์เรย์ 3X4 โดยใช้ฟังก์ชัน arange () และทำซ้ำโดยใช้ nditer.

ตัวอย่าง 1

import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)

print 'Original array is:'
print a
print '\n'

print 'Modified array is:'
for x in np.nditer(a):
   print x,

ผลลัพธ์ของโปรแกรมนี้มีดังนี้ -

Original array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Modified array is:
0 5 10 15 20 25 30 35 40 45 50 55

ตัวอย่าง 2

ลำดับของการวนซ้ำถูกเลือกให้ตรงกับเลย์เอาต์หน่วยความจำของอาร์เรย์โดยไม่ต้องพิจารณาลำดับที่เจาะจง สิ่งนี้สามารถเห็นได้โดยการวนซ้ำบนทรานสโพสของอาร์เรย์ด้านบน

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4) 
   
print 'Original array is:'
print a 
print '\n'  
   
print 'Transpose of the original array is:' 
b = a.T 
print b 
print '\n'  
   
print 'Modified array is:' 
for x in np.nditer(b): 
   print x,

ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้ -

Original array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Transpose of the original array is:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]

Modified array is:
0 5 10 15 20 25 30 35 40 45 50 55

ลำดับการทำซ้ำ

หากองค์ประกอบเดียวกันถูกจัดเก็บโดยใช้คำสั่งแบบ F ตัววนซ้ำจะเลือกวิธีที่มีประสิทธิภาพมากขึ้นในการทำซ้ำบนอาร์เรย์

ตัวอย่าง 1

import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)
print 'Original array is:'
print a
print '\n'

print 'Transpose of the original array is:'
b = a.T
print b
print '\n'

print 'Sorted in C-style order:'
c = b.copy(order='C')
print c
for x in np.nditer(c):
   print x,

print '\n'

print 'Sorted in F-style order:'
c = b.copy(order='F')
print c
for x in np.nditer(c):
   print x,

ผลลัพธ์จะเป็นดังนี้ -

Original array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Transpose of the original array is:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]

Sorted in C-style order:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]
0 20 40 5 25 45 10 30 50 15 35 55

Sorted in F-style order:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]
0 5 10 15 20 25 30 35 40 45 50 55

ตัวอย่าง 2

เป็นไปได้ที่จะบังคับ nditer วัตถุที่จะใช้คำสั่งเฉพาะโดยกล่าวถึงอย่างชัดเจน

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4) 

print 'Original array is:' 
print a 
print '\n'  

print 'Sorted in C-style order:' 
for x in np.nditer(a, order = 'C'): 
   print x,  
print '\n' 

print 'Sorted in F-style order:' 
for x in np.nditer(a, order = 'F'): 
   print x,

ผลลัพธ์จะเป็น -

Original array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Sorted in C-style order:
0 5 10 15 20 25 30 35 40 45 50 55

Sorted in F-style order:
0 20 40 5 25 45 10 30 50 15 35 55

การแก้ไขค่าอาร์เรย์

nditer วัตถุมีพารามิเตอร์ทางเลือกอื่นที่เรียกว่า op_flags. ค่าเริ่มต้นคืออ่านอย่างเดียว แต่สามารถตั้งค่าเป็นโหมดอ่านเขียนหรือเขียนอย่างเดียวได้ สิ่งนี้จะเปิดใช้งานการแก้ไของค์ประกอบอาร์เรย์โดยใช้ตัววนซ้ำนี้

ตัวอย่าง

import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)
print 'Original array is:'
print a
print '\n'

for x in np.nditer(a, op_flags = ['readwrite']):
   x[...] = 2*x
print 'Modified array is:'
print a

ผลลัพธ์มีดังนี้ -

Original array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Modified array is:
[[ 0 10 20 30]
 [ 40 50 60 70]
 [ 80 90 100 110]]

ห่วงภายนอก

ตัวสร้างคลาส nditer มี ‘flags’ พารามิเตอร์ซึ่งสามารถรับค่าต่อไปนี้ -

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

c_index

สามารถติดตามดัชนี C_order ได้

2

f_index

มีการติดตามดัชนี Fortran_order

3

multi-index

สามารถติดตามประเภทของดัชนีที่มีหนึ่งรายการต่อการวนซ้ำ

4

external_loop

ทำให้ค่าที่กำหนดให้เป็นอาร์เรย์มิติเดียวที่มีหลายค่าแทนอาร์เรย์มิติศูนย์

ตัวอย่าง

ในตัวอย่างต่อไปนี้อาร์เรย์หนึ่งมิติที่สอดคล้องกับแต่ละคอลัมน์จะถูกส่งผ่านโดยตัววนซ้ำ

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4) 

print 'Original array is:' 
print a 
print '\n'  

print 'Modified array is:' 
for x in np.nditer(a, flags = ['external_loop'], order = 'F'): 
   print x,

ผลลัพธ์มีดังนี้ -

Original array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Modified array is:
[ 0 20 40] [ 5 25 45] [10 30 50] [15 35 55]

การออกอากาศซ้ำ

หากมีสองอาร์เรย์ broadcastableรวมกัน nditerวัตถุสามารถทำซ้ำได้พร้อมกัน สมมติว่าอาร์เรย์a มีมิติ 3X4 และมีอาร์เรย์อื่น b ของมิติ 1X4 ใช้ตัววนซ้ำประเภทต่อไปนี้ (อาร์เรย์ b ออกอากาศเป็นขนาด a).

ตัวอย่าง

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4) 

print 'First array is:' 
print a 
print '\n'  

print 'Second array is:' 
b = np.array([1, 2, 3, 4], dtype = int) 
print b  
print '\n' 

print 'Modified array is:' 
for x,y in np.nditer([a,b]): 
   print "%d:%d" % (x,y),

ผลลัพธ์จะเป็นดังนี้ -

First array is:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

Second array is:
[1 2 3 4]

Modified array is:
0:1 5:2 10:3 15:4 20:1 25:2 30:3 35:4 40:1 45:2 50:3 55:4

มีกิจวัตรมากมายในแพ็คเกจ NumPy สำหรับการจัดการองค์ประกอบในวัตถุ ndarray สามารถแบ่งออกเป็นประเภทต่อไปนี้ -

การเปลี่ยนรูปร่าง

ซีเนียร์ รูปร่างและคำอธิบาย
1 ก่อร่างใหม่

สร้างรูปร่างใหม่ให้กับอาร์เรย์โดยไม่ต้องเปลี่ยนแปลงข้อมูล

2 แบน

ตัววนซ้ำ 1 มิติบนอาร์เรย์

3 เรียบ

ส่งคืนสำเนาของอาร์เรย์ที่ยุบเป็นมิติเดียว

4 เพ้อ

ส่งคืนอาร์เรย์แฟล็ตที่ต่อเนื่องกัน

การดำเนินการเปลี่ยน

ซีเนียร์ การทำงานและคำอธิบาย
1 ทรานสโพส

อนุญาตขนาดของอาร์เรย์

2 เอ็นดาร์เรย์ที

เหมือนกับ self.transpose ()

3 โรลแอ็กซิส

หมุนแกนที่ระบุไปข้างหลัง

4 แลกเปลี่ยน

เปลี่ยนสองแกนของอาร์เรย์

การเปลี่ยนขนาด

ซีเนียร์ มิติข้อมูลและคำอธิบาย
1 ออกอากาศ

สร้างวัตถุที่เลียนแบบการแพร่ภาพ

2 Broadcast_to

กระจายอาร์เรย์เป็นรูปร่างใหม่

3 expand_dims

ขยายรูปร่างของอาร์เรย์

4 บีบ

ลบรายการมิติเดียวออกจากรูปร่างของอาร์เรย์

การเข้าร่วมอาร์เรย์

ซีเนียร์ อาร์เรย์และคำอธิบาย
1 ต่อกัน

รวมลำดับของอาร์เรย์ตามแกนที่มีอยู่

2 ซ้อนกัน

รวมลำดับของอาร์เรย์ตามแกนใหม่

3 hstack

จัดเรียงอาร์เรย์ตามลำดับตามแนวนอน (คอลัมน์ที่ชาญฉลาด)

4 vstack

เรียงอาร์เรย์ตามลำดับในแนวตั้ง (แถวที่ชาญฉลาด)

แยกอาร์เรย์

ซีเนียร์ อาร์เรย์และคำอธิบาย
1 แยก

แยกอาร์เรย์ออกเป็นอาร์เรย์ย่อยหลายอาร์เรย์

2 hsplit

แยกอาร์เรย์ออกเป็นอาร์เรย์ย่อยหลายรายการในแนวนอน (แบบคอลัมน์)

3 VSplit

แยกอาร์เรย์ออกเป็นอาร์เรย์ย่อยหลายรายการในแนวตั้ง (row-wise)

การเพิ่ม / ลบองค์ประกอบ

ซีเนียร์ องค์ประกอบและคำอธิบาย
1 ปรับขนาด

ส่งคืนอาร์เรย์ใหม่ที่มีรูปร่างที่ระบุ

2 ผนวก

ต่อท้ายค่าที่ท้ายอาร์เรย์

3 แทรก

แทรกค่าตามแกนที่กำหนดก่อนดัชนีที่กำหนด

4 ลบ

ส่งคืนอาร์เรย์ใหม่ที่มีอาร์เรย์ย่อยตามแกนที่ถูกลบ

5 ไม่เหมือนใคร

ค้นหาองค์ประกอบเฉพาะของอาร์เรย์

ต่อไปนี้เป็นฟังก์ชันสำหรับการดำเนินการแบบบิตที่มีอยู่ในแพ็คเกจ NumPy

ซีเนียร์ การทำงานและคำอธิบาย
1 bitwise_and

คำนวณการดำเนินการและการดำเนินการขององค์ประกอบอาร์เรย์ในระดับบิต

2 bitwise_or

คำนวณบิตหรือการดำเนินการขององค์ประกอบอาร์เรย์

3 กลับด้าน

คำนวณบิตไม่

4 left_shift

เลื่อนบิตของการแทนค่าฐานสองไปทางซ้าย

5 right_shift

เลื่อนบิตของการแทนค่าไบนารีไปทางขวา

ฟังก์ชันต่อไปนี้ใช้เพื่อดำเนินการกับสตริงแบบเวกเตอร์สำหรับอาร์เรย์ของ dtype numpy.string_ หรือ numpy.unicode_ โดยอิงตามฟังก์ชันสตริงมาตรฐานในไลบรารีในตัวของ Python

ซีเนียร์ ฟังก์ชั่นและคำอธิบาย
1 เพิ่ม()

ส่งคืนการต่อสายอักขระที่ชาญฉลาดสำหรับสองอาร์เรย์ของ str หรือ Unicode

2 คูณ()

ส่งคืนสตริงที่มีการเรียงต่อกันหลาย ๆ องค์ประกอบที่ชาญฉลาด

3 ศูนย์()

ส่งคืนสำเนาของสตริงที่กำหนดโดยมีองค์ประกอบอยู่ตรงกลางสตริงของความยาวที่ระบุ

4 ใช้ประโยชน์ ()

ส่งคืนสำเนาของสตริงที่มีเฉพาะอักขระตัวแรกเป็นตัวพิมพ์ใหญ่

5 หัวข้อ()

ส่งคืนชื่อที่ชาญฉลาดขององค์ประกอบที่อยู่ในเวอร์ชันของสตริงหรือยูนิโคด

6 ต่ำกว่า ()

ส่งคืนอาร์เรย์ที่มีองค์ประกอบที่แปลงเป็นตัวพิมพ์เล็ก

7 บน ()

ส่งคืนอาร์เรย์ที่มีองค์ประกอบที่แปลงเป็นตัวพิมพ์ใหญ่

8 แยก ()

ส่งคืนรายการคำในสตริงโดยใช้ตัวคั่น

9 เส้นแบ่ง ()

ส่งคืนรายการของเส้นในองค์ประกอบโดยทำลายที่ขอบเขตของเส้น

10 แถบ ()

ส่งคืนสำเนาโดยลบอักขระนำหน้าและต่อท้าย

11 เข้าร่วม ()

ส่งคืนสตริงซึ่งเป็นการเชื่อมต่อของสตริงในลำดับ

12 แทนที่()

ส่งคืนสำเนาของสตริงที่มีสตริงย่อยที่เกิดขึ้นทั้งหมดแทนที่ด้วยสตริงใหม่

13 ถอดรหัส ()

เรียกใช้ str.decode element-wise

14 เข้ารหัส ()

เรียกใช้ str.encode element-wise

ฟังก์ชันเหล่านี้กำหนดไว้ในคลาสอาร์เรย์อักขระ (numpy.char) แพ็คเกจ Numarray รุ่นเก่ามีคลาส chararray ฟังก์ชันข้างต้นในคลาส numpy.char มีประโยชน์ในการดำเนินการกับสตริงแบบเวกเตอร์

เป็นที่เข้าใจได้ว่า NumPy มีการดำเนินการทางคณิตศาสตร์จำนวนมาก NumPy มีฟังก์ชันตรีโกณมิติมาตรฐานฟังก์ชันสำหรับการคำนวณทางคณิตศาสตร์การจัดการจำนวนเชิงซ้อน ฯลฯ

ฟังก์ชันตรีโกณมิติ

NumPy มีฟังก์ชันตรีโกณมิติมาตรฐานซึ่งส่งคืนอัตราส่วนตรีโกณมิติสำหรับมุมที่กำหนดเป็นเรเดียน

Example

import numpy as np 
a = np.array([0,30,45,60,90]) 

print 'Sine of different angles:' 
# Convert to radians by multiplying with pi/180 
print np.sin(a*np.pi/180) 
print '\n'  

print 'Cosine values for angles in array:' 
print np.cos(a*np.pi/180) 
print '\n'  

print 'Tangent values for given angles:' 
print np.tan(a*np.pi/180)

นี่คือผลลัพธ์ -

Sine of different angles:                                                     
[ 0.          0.5         0.70710678  0.8660254   1.        ]

Cosine values for angles in array:
[  1.00000000e+00   8.66025404e-01   7.07106781e-01   5.00000000e-01
   6.12323400e-17]

Tangent values for given angles:                                              
[  0.00000000e+00   5.77350269e-01   1.00000000e+00   1.73205081e+00
   1.63312394e+16]

arcsin, arcos, และ arctanฟังก์ชันจะส่งกลับค่าผกผันตรีโกณมิติของ sin, cos และ tan ของมุมที่กำหนด ผลลัพธ์ของฟังก์ชันเหล่านี้สามารถตรวจสอบได้โดยnumpy.degrees() function โดยการแปลงเรเดียนเป็นองศา

Example

import numpy as np 
a = np.array([0,30,45,60,90]) 

print 'Array containing sine values:' 
sin = np.sin(a*np.pi/180) 
print sin 
print '\n'  

print 'Compute sine inverse of angles. Returned values are in radians.' 
inv = np.arcsin(sin) 
print inv 
print '\n'  

print 'Check result by converting to degrees:' 
print np.degrees(inv) 
print '\n'  

print 'arccos and arctan functions behave similarly:' 
cos = np.cos(a*np.pi/180) 
print cos 
print '\n'  

print 'Inverse of cos:' 
inv = np.arccos(cos) 
print inv 
print '\n'  

print 'In degrees:' 
print np.degrees(inv) 
print '\n'  

print 'Tan function:' 
tan = np.tan(a*np.pi/180) 
print tan
print '\n'  

print 'Inverse of tan:' 
inv = np.arctan(tan) 
print inv 
print '\n'  

print 'In degrees:' 
print np.degrees(inv)

ผลลัพธ์มีดังนี้ -

Array containing sine values:
[ 0.          0.5         0.70710678  0.8660254   1.        ]

Compute sine inverse of angles. Returned values are in radians.
[ 0.          0.52359878  0.78539816  1.04719755  1.57079633] 

Check result by converting to degrees:
[  0.  30.  45.  60.  90.]

arccos and arctan functions behave similarly:
[  1.00000000e+00   8.66025404e-01   7.07106781e-01   5.00000000e-01          
   6.12323400e-17] 

Inverse of cos:
[ 0.          0.52359878  0.78539816  1.04719755  1.57079633] 

In degrees:
[  0.  30.  45.  60.  90.] 

Tan function:
[  0.00000000e+00   5.77350269e-01   1.00000000e+00   1.73205081e+00          
   1.63312394e+16]

Inverse of tan:
[ 0.          0.52359878  0.78539816  1.04719755  1.57079633]

In degrees:
[  0.  30.  45.  60.  90.]

ฟังก์ชันสำหรับการปัดเศษ

numpy.around ()

นี่คือฟังก์ชันที่ส่งกลับค่าที่ปัดเศษเป็นความแม่นยำที่ต้องการ ฟังก์ชันรับพารามิเตอร์ต่อไปนี้

numpy.around(a,decimals)

ที่ไหน

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

a

ป้อนข้อมูล

2

decimals

จำนวนทศนิยมที่จะปัดเศษ ค่าเริ่มต้นคือ 0 ถ้าเป็นค่าลบจำนวนเต็มจะถูกปัดเศษเพื่อวางตำแหน่งทางด้านซ้ายของจุดทศนิยม

Example

import numpy as np 
a = np.array([1.0,5.55, 123, 0.567, 25.532]) 

print 'Original array:' 
print a 
print '\n'  

print 'After rounding:' 
print np.around(a) 
print np.around(a, decimals = 1) 
print np.around(a, decimals = -1)

สร้างผลลัพธ์ต่อไปนี้ -

Original array:                                                               
[   1.       5.55   123.       0.567   25.532] 

After rounding:                                                               
[   1.    6.   123.    1.   26. ]                                               
[   1.    5.6  123.    0.6  25.5]                                          
[   0.    10.  120.    0.   30. ]

numpy.floor ()

ฟังก์ชันนี้จะส่งคืนจำนวนเต็มที่มากที่สุดไม่เกินพารามิเตอร์อินพุต ชั้นของscalar x มีขนาดใหญ่ที่สุด integer i, ดังนั้น i <= x. โปรดทราบว่าใน Python พื้นจะปัดเศษจาก 0 เสมอ

Example

import numpy as np 
a = np.array([-1.7, 1.5, -0.2, 0.6, 10]) 

print 'The given array:' 
print a 
print '\n'  

print 'The modified array:' 
print np.floor(a)

สร้างผลลัพธ์ต่อไปนี้ -

The given array:                                                              
[ -1.7   1.5  -0.2   0.6  10. ]

The modified array:                                                           
[ -2.   1.  -1.   0.  10.]

numpy.ceil ()

ฟังก์ชัน ceil () จะส่งคืนเพดานของค่าอินพุตนั่นคือเพดานของ scalar x มีขนาดเล็กที่สุด integer i, ดังนั้น i >= x.

Example

import numpy as np 
a = np.array([-1.7, 1.5, -0.2, 0.6, 10]) 

print 'The given array:' 
print a 
print '\n'  

print 'The modified array:' 
print np.ceil(a)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

The given array:                                                              
[ -1.7   1.5  -0.2   0.6  10. ]

The modified array:                                                           
[ -1.   2.  -0.   1.  10.]

อาร์เรย์อินพุตสำหรับการดำเนินการทางคณิตศาสตร์เช่น add () ลบ () คูณ () และหาร () ต้องมีรูปร่างเหมือนกันหรือควรเป็นไปตามกฎการกระจายเสียงของอาร์เรย์

ตัวอย่าง

import numpy as np 
a = np.arange(9, dtype = np.float_).reshape(3,3) 

print 'First array:' 
print a 
print '\n'  

print 'Second array:' 
b = np.array([10,10,10]) 
print b 
print '\n'  

print 'Add the two arrays:' 
print np.add(a,b) 
print '\n'  

print 'Subtract the two arrays:' 
print np.subtract(a,b) 
print '\n'  

print 'Multiply the two arrays:' 
print np.multiply(a,b) 
print '\n'  

print 'Divide the two arrays:' 
print np.divide(a,b)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

First array:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

Second array:
[10 10 10]

Add the two arrays:
[[ 10. 11. 12.]
 [ 13. 14. 15.]
 [ 16. 17. 18.]]

Subtract the two arrays:
[[-10. -9. -8.]
 [ -7. -6. -5.]
 [ -4. -3. -2.]]

Multiply the two arrays:
[[ 0. 10. 20.]
 [ 30. 40. 50.]
 [ 60. 70. 80.]]

Divide the two arrays:
[[ 0. 0.1 0.2]
 [ 0.3 0.4 0.5]
 [ 0.6 0.7 0.8]]

ตอนนี้ให้เราพูดถึงฟังก์ชันเลขคณิตที่สำคัญอื่น ๆ ที่มีอยู่ใน NumPy

numpy.reciprocal ()

ฟังก์ชั่นนี้คืนค่าซึ่งกันและกันของอาร์กิวเมนต์ซึ่งเป็นองค์ประกอบที่ชาญฉลาด สำหรับองค์ประกอบที่มีค่าสัมบูรณ์มากกว่า 1 ผลลัพธ์จะเป็น 0 เสมอเนื่องจากวิธีที่ Python จัดการกับการหารจำนวนเต็ม สำหรับจำนวนเต็ม 0 จะมีการออกคำเตือนล้น

ตัวอย่าง

import numpy as np 
a = np.array([0.25, 1.33, 1, 0, 100]) 

print 'Our array is:' 
print a 
print '\n'  

print 'After applying reciprocal function:' 
print np.reciprocal(a) 
print '\n'  

b = np.array([100], dtype = int) 
print 'The second array is:' 
print b 
print '\n'  

print 'After applying reciprocal function:' 
print np.reciprocal(b)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:                                                                 
[   0.25    1.33    1.      0.    100.  ]

After applying reciprocal function:                                           
main.py:9: RuntimeWarning: divide by zero encountered in reciprocal
  print np.reciprocal(a)
[ 4.         0.7518797  1.               inf  0.01     ]

The second array is:
[100]

After applying reciprocal function:
[0]

numpy.power ()

ฟังก์ชั่นนี้ถือว่าองค์ประกอบในอาร์เรย์อินพุตแรกเป็นฐานและส่งกลับไปเป็นพลังขององค์ประกอบที่เกี่ยวข้องในอาร์เรย์อินพุตที่สอง

import numpy as np 
a = np.array([10,100,1000]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying power function:' 
print np.power(a,2) 
print '\n'  

print 'Second array:' 
b = np.array([1,2,3]) 
print b 
print '\n'  

print 'Applying power function again:' 
print np.power(a,b)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:                                                                 
[  10  100 1000]

Applying power function:
[    100   10000 1000000]

Second array:
[1 2 3]

Applying power function again:
[        10      10000 1000000000]

numpy.mod ()

ฟังก์ชันนี้จะคืนค่าส่วนที่เหลือของการแบ่งองค์ประกอบที่เกี่ยวข้องในอาร์เรย์อินพุต ฟังก์ชั่นnumpy.remainder() ยังให้ผลลัพธ์เดียวกัน

import numpy as np 
a = np.array([10,20,30]) 
b = np.array([3,5,7]) 

print 'First array:' 
print a 
print '\n'  

print 'Second array:' 
print b 
print '\n'  

print 'Applying mod() function:' 
print np.mod(a,b) 
print '\n'  

print 'Applying remainder() function:' 
print np.remainder(a,b)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

First array:                                                                  
[10 20 30]

Second array:                                                                 
[3 5 7]

Applying mod() function:                                                      
[1 0 2]

Applying remainder() function:                                                
[1 0 2]

ฟังก์ชันต่อไปนี้ใช้เพื่อดำเนินการกับอาร์เรย์ที่มีจำนวนเชิงซ้อน

  • numpy.real() - ส่งคืนส่วนจริงของอาร์กิวเมนต์ชนิดข้อมูลที่ซับซ้อน

  • numpy.imag() - ส่งคืนส่วนจินตภาพของอาร์กิวเมนต์ชนิดข้อมูลที่ซับซ้อน

  • numpy.conj() - ส่งคืนคอนจูเกตที่ซับซ้อนซึ่งได้มาจากการเปลี่ยนสัญลักษณ์ของส่วนจินตภาพ

  • numpy.angle()- คืนค่ามุมของอาร์กิวเมนต์ที่ซับซ้อน ฟังก์ชันมีพารามิเตอร์องศา ถ้าเป็นจริงมุมในองศาจะถูกส่งกลับมิฉะนั้นมุมจะเป็นเรเดียน

import numpy as np 
a = np.array([-5.6j, 0.2j, 11. , 1+1j]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying real() function:' 
print np.real(a) 
print '\n'  

print 'Applying imag() function:' 
print np.imag(a) 
print '\n'  

print 'Applying conj() function:' 
print np.conj(a) 
print '\n'  

print 'Applying angle() function:' 
print np.angle(a) 
print '\n'  

print 'Applying angle() function again (result in degrees)' 
print np.angle(a, deg = True)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[ 0.-5.6j 0.+0.2j 11.+0.j 1.+1.j ]

Applying real() function:
[ 0. 0. 11. 1.]

Applying imag() function:
[-5.6 0.2 0. 1. ]

Applying conj() function:
[ 0.+5.6j 0.-0.2j 11.-0.j 1.-1.j ]

Applying angle() function:
[-1.57079633 1.57079633 0. 0.78539816]

Applying angle() function again (result in degrees)
[-90. 90. 0. 45.]

NumPy มีฟังก์ชันทางสถิติที่มีประโยชน์ไม่น้อยสำหรับการค้นหาค่าเบี่ยงเบนมาตรฐานและค่าความแปรปรวนต่ำสุดค่าสูงสุดเปอร์เซ็นต์ไทล์ ฯลฯ จากองค์ประกอบที่กำหนดในอาร์เรย์ ฟังก์ชั่นอธิบายดังนี้ -

numpy.amin () และ numpy.amax ()

ฟังก์ชันเหล่านี้ส่งคืนค่าต่ำสุดและสูงสุดจากองค์ประกอบในอาร์เรย์ที่กำหนดตามแกนที่ระบุ

ตัวอย่าง

import numpy as np 
a = np.array([[3,7,5],[8,4,3],[2,4,9]]) 

print 'Our array is:' 
print a  
print '\n'  

print 'Applying amin() function:' 
print np.amin(a,1) 
print '\n'  

print 'Applying amin() function again:' 
print np.amin(a,0) 
print '\n'  

print 'Applying amax() function:' 
print np.amax(a) 
print '\n'  

print 'Applying amax() function again:' 
print np.amax(a, axis = 0)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[3 7 5]
[8 4 3]
[2 4 9]]

Applying amin() function:
[3 3 2]

Applying amin() function again:
[2 4 3]

Applying amax() function:
9

Applying amax() function again:
[8 7 9]

numpy.ptp ()

numpy.ptp() ฟังก์ชันส่งคืนช่วง (สูงสุด - ต่ำสุด) ของค่าตามแกน

import numpy as np 
a = np.array([[3,7,5],[8,4,3],[2,4,9]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying ptp() function:' 
print np.ptp(a) 
print '\n'  

print 'Applying ptp() function along axis 1:' 
print np.ptp(a, axis = 1) 
print '\n'   

print 'Applying ptp() function along axis 0:'
print np.ptp(a, axis = 0)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[3 7 5]
[8 4 3]
[2 4 9]]

Applying ptp() function:
7

Applying ptp() function along axis 1:
[4 5 7]

Applying ptp() function along axis 0:
[6 3 6]

numpy.percentile ()

เปอร์เซ็นไทล์ (หรือเซนไทล์) คือการวัดที่ใช้ในสถิติที่ระบุค่าด้านล่างซึ่งเปอร์เซ็นต์ของการสังเกตที่กำหนดในกลุ่มของการสังเกตจะลดลง ฟังก์ชั่นnumpy.percentile() รับอาร์กิวเมนต์ต่อไปนี้

numpy.percentile(a, q, axis)

ที่ไหน

ซีเนียร์ อาร์กิวเมนต์และคำอธิบาย
1

a

อินพุตอาร์เรย์

2

q

เปอร์เซ็นไทล์ที่จะคำนวณต้องอยู่ระหว่าง 0-100

3

axis

แกนที่จะคำนวณเปอร์เซ็นไทล์

ตัวอย่าง

import numpy as np 
a = np.array([[30,40,70],[80,20,10],[50,90,60]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying percentile() function:' 
print np.percentile(a,50) 
print '\n'  

print 'Applying percentile() function along axis 1:' 
print np.percentile(a,50, axis = 1) 
print '\n'  

print 'Applying percentile() function along axis 0:' 
print np.percentile(a,50, axis = 0)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

Applying percentile() function:
50.0

Applying percentile() function along axis 1:
[ 40. 20. 60.]

Applying percentile() function along axis 0:
[ 50. 40. 60.]

numpy.median ()

Medianหมายถึงค่าที่แยกครึ่งที่สูงกว่าของตัวอย่างข้อมูลออกจากครึ่งล่าง numpy.median() ฟังก์ชันถูกใช้ตามที่แสดงในโปรแกรมต่อไปนี้

ตัวอย่าง

import numpy as np 
a = np.array([[30,65,70],[80,95,10],[50,90,60]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying median() function:' 
print np.median(a) 
print '\n'  

print 'Applying median() function along axis 0:' 
print np.median(a, axis = 0) 
print '\n'  
 
print 'Applying median() function along axis 1:' 
print np.median(a, axis = 1)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[30 65 70]
 [80 95 10]
 [50 90 60]]

Applying median() function:
65.0

Applying median() function along axis 0:
[ 50. 90. 60.]

Applying median() function along axis 1:
[ 65. 80. 60.]

numpy.mean ()

ค่าเฉลี่ยเลขคณิตคือผลรวมขององค์ประกอบตามแกนหารด้วยจำนวนองค์ประกอบ numpy.mean()ฟังก์ชันส่งกลับค่าเฉลี่ยเลขคณิตขององค์ประกอบในอาร์เรย์ หากกล่าวถึงแกนก็จะคำนวณตามนั้น

ตัวอย่าง

import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying mean() function:' 
print np.mean(a) 
print '\n'  

print 'Applying mean() function along axis 0:' 
print np.mean(a, axis = 0) 
print '\n'  

print 'Applying mean() function along axis 1:' 
print np.mean(a, axis = 1)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[1 2 3]
 [3 4 5]
 [4 5 6]]

Applying mean() function:
3.66666666667

Applying mean() function along axis 0:
[ 2.66666667 3.66666667 4.66666667]

Applying mean() function along axis 1:
[ 2. 4. 5.]

numpy.average ()

ค่าเฉลี่ยถ่วงน้ำหนักเป็นค่าเฉลี่ยที่เกิดจากการคูณของแต่ละองค์ประกอบด้วยปัจจัยที่สะท้อนถึงความสำคัญ numpy.average()ฟังก์ชันคำนวณค่าเฉลี่ยถ่วงน้ำหนักขององค์ประกอบในอาร์เรย์ตามน้ำหนักที่กำหนดในอาร์เรย์อื่น ฟังก์ชันสามารถมีพารามิเตอร์แกน หากไม่ได้ระบุแกนอาร์เรย์จะแบน

เมื่อพิจารณาจากอาร์เรย์ [1,2,3,4] และน้ำหนักที่สอดคล้องกัน [4,3,2,1] ค่าเฉลี่ยถ่วงน้ำหนักจะคำนวณโดยการเพิ่มผลคูณขององค์ประกอบที่เกี่ยวข้องและหารผลรวมด้วยผลรวมของน้ำหนัก

ค่าเฉลี่ยถ่วงน้ำหนัก = (1 * 4 + 2 * 3 + 3 * 2 + 4 * 1) / (4 + 3 + 2 + 1)

ตัวอย่าง

import numpy as np 
a = np.array([1,2,3,4]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying average() function:' 
print np.average(a) 
print '\n'  

# this is same as mean when weight is not specified 
wts = np.array([4,3,2,1]) 

print 'Applying average() function again:' 
print np.average(a,weights = wts) 
print '\n'  

# Returns the sum of weights, if the returned parameter is set to True. 
print 'Sum of weights' 
print np.average([1,2,3, 4],weights = [4,3,2,1], returned = True)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[1 2 3 4]

Applying average() function:
2.5

Applying average() function again:
2.0

Sum of weights
(2.0, 10.0)

ในอาร์เรย์หลายมิติสามารถระบุแกนสำหรับการคำนวณได้

ตัวอย่าง

import numpy as np 
a = np.arange(6).reshape(3,2) 

print 'Our array is:' 
print a 
print '\n'  

print 'Modified array:' 
wt = np.array([3,5]) 
print np.average(a, axis = 1, weights = wt) 
print '\n'  

print 'Modified array:' 
print np.average(a, axis = 1, weights = wt, returned = True)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[0 1]
 [2 3]
 [4 5]]

Modified array:
[ 0.625 2.625 4.625]

Modified array:
(array([ 0.625, 2.625, 4.625]), array([ 8., 8., 8.]))

ส่วนเบี่ยงเบนมาตรฐาน

ค่าเบี่ยงเบนมาตรฐานคือรากที่สองของค่าเฉลี่ยของส่วนเบี่ยงเบนกำลังสองจากค่าเฉลี่ย สูตรสำหรับส่วนเบี่ยงเบนมาตรฐานมีดังนี้ -

std = sqrt(mean(abs(x - x.mean())**2))

ถ้าอาร์เรย์คือ [1, 2, 3, 4] ดังนั้นค่าเฉลี่ยของมันคือ 2.5 ดังนั้นค่าเบี่ยงเบนกำลังสองคือ [2.25, 0.25, 0.25, 2.25] และรากที่สองของค่าเฉลี่ยหารด้วย 4 นั่นคือ sqrt (5/4) คือ 1.1180339887498949

ตัวอย่าง

import numpy as np 
print np.std([1,2,3,4])

มันจะสร้างผลลัพธ์ต่อไปนี้ -

1.1180339887498949

ความแปรปรวน

ความแปรปรวนคือค่าเฉลี่ยของส่วนเบี่ยงเบนกำลังสองกล่าวคือ mean(abs(x - x.mean())**2). กล่าวอีกนัยหนึ่งค่าเบี่ยงเบนมาตรฐานคือรากที่สองของความแปรปรวน

ตัวอย่าง

import numpy as np 
print np.var([1,2,3,4])

มันจะสร้างผลลัพธ์ต่อไปนี้ -

1.25

ฟังก์ชันที่เกี่ยวข้องกับการเรียงลำดับมีให้ใช้งานใน NumPy ฟังก์ชันการเรียงลำดับเหล่านี้ใช้อัลกอริทึมการเรียงลำดับที่แตกต่างกันซึ่งแต่ละฟังก์ชันจะมีลักษณะความเร็วในการดำเนินการประสิทธิภาพกรณีที่เลวร้ายที่สุดพื้นที่ทำงานที่ต้องการและความเสถียรของอัลกอริทึม ตารางต่อไปนี้แสดงการเปรียบเทียบอัลกอริทึมการจัดเรียงสามแบบ

ชนิด ความเร็ว กรณีที่เลวร้ายที่สุด พื้นที่ทำงาน มั่นคง
'Quicksort' 1 O (n ^ 2) 0 ไม่
"การรวม" 2 O (n * บันทึก (n)) ~ n / 2 ใช่
'heapsort' 3 O (n * บันทึก (n)) 0 ไม่

numpy.sort ()

ฟังก์ชัน sort () ส่งคืนสำเนาที่เรียงลำดับของอาร์เรย์อินพุต มีพารามิเตอร์ดังต่อไปนี้ -

numpy.sort(a, axis, kind, order)

ที่ไหน

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

a

อาร์เรย์ที่จะจัดเรียง

2

axis

แกนที่จะจัดเรียงอาร์เรย์ ถ้าไม่มีอาร์เรย์จะแบนโดยเรียงตามแกนสุดท้าย

3

kind

ค่าเริ่มต้นคือ Quicksort

4

order

หากอาร์เรย์มีฟิลด์ลำดับของฟิลด์ที่จะจัดเรียง

ตัวอย่าง

import numpy as np  
a = np.array([[3,7],[9,1]]) 

print 'Our array is:' 
print a 
print '\n'

print 'Applying sort() function:' 
print np.sort(a) 
print '\n' 
  
print 'Sort along axis 0:' 
print np.sort(a, axis = 0) 
print '\n'  

# Order parameter in sort function 
dt = np.dtype([('name', 'S10'),('age', int)]) 
a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) 

print 'Our array is:' 
print a 
print '\n'  

print 'Order by name:' 
print np.sort(a, order = 'name')

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[3 7]
 [9 1]]

Applying sort() function:
[[3 7]
 [1 9]]

Sort along axis 0:
[[3 1]
 [9 7]]

Our array is:
[('raju', 21) ('anil', 25) ('ravi', 17) ('amar', 27)]

Order by name:
[('amar', 27) ('anil', 25) ('raju', 21) ('ravi', 17)]

numpy.argsort ()

numpy.argsort()ฟังก์ชันทำการจัดเรียงทางอ้อมในอาร์เรย์อินพุตตามแกนที่กำหนดและใช้ประเภทการจัดเรียงที่ระบุเพื่อส่งคืนอาร์เรย์ของดัชนีข้อมูล อาร์เรย์ดัชนีนี้ใช้เพื่อสร้างอาร์เรย์ที่เรียงลำดับ

ตัวอย่าง

import numpy as np 
x = np.array([3, 1, 2]) 

print 'Our array is:' 
print x 
print '\n'  

print 'Applying argsort() to x:' 
y = np.argsort(x) 
print y 
print '\n'  

print 'Reconstruct original array in sorted order:' 
print x[y] 
print '\n'  

print 'Reconstruct the original array using loop:' 
for i in y: 
   print x[i],

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[3 1 2]

Applying argsort() to x:
[1 2 0]

Reconstruct original array in sorted order:
[1 2 3]

Reconstruct the original array using loop:
1 2 3

numpy.lexsort ()

ฟังก์ชันดำเนินการจัดเรียงทางอ้อมโดยใช้ลำดับของปุ่ม คีย์สามารถมองเห็นเป็นคอลัมน์ในสเปรดชีต ฟังก์ชันจะส่งคืนอาร์เรย์ของดัชนีโดยใช้ข้อมูลที่เรียงลำดับได้ โปรดทราบว่าคีย์สุดท้ายเป็นคีย์หลักของการจัดเรียง

ตัวอย่าง

import numpy as np 

nm = ('raju','anil','ravi','amar') 
dv = ('f.y.', 's.y.', 's.y.', 'f.y.') 
ind = np.lexsort((dv,nm)) 

print 'Applying lexsort() function:' 
print ind 
print '\n'  

print 'Use this index to get sorted data:' 
print [nm[i] + ", " + dv[i] for i in ind]

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Applying lexsort() function:
[3 1 0 2]

Use this index to get sorted data:
['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']

โมดูล NumPy มีฟังก์ชันมากมายสำหรับการค้นหาภายในอาร์เรย์ มีฟังก์ชั่นสำหรับการค้นหาค่าสูงสุดค่าต่ำสุดและองค์ประกอบที่ตรงตามเงื่อนไขที่กำหนด

numpy.argmax () และ numpy.argmin ()

ฟังก์ชันทั้งสองนี้ส่งคืนดัชนีขององค์ประกอบสูงสุดและต่ำสุดตามลำดับตามแกนที่กำหนด

ตัวอย่าง

import numpy as np 
a = np.array([[30,40,70],[80,20,10],[50,90,60]]) 

print 'Our array is:' 
print a 
print '\n' 

print 'Applying argmax() function:' 
print np.argmax(a) 
print '\n'  

print 'Index of maximum number in flattened array' 
print a.flatten() 
print '\n'  

print 'Array containing indices of maximum along axis 0:' 
maxindex = np.argmax(a, axis = 0) 
print maxindex 
print '\n'  

print 'Array containing indices of maximum along axis 1:' 
maxindex = np.argmax(a, axis = 1) 
print maxindex 
print '\n'  

print 'Applying argmin() function:' 
minindex = np.argmin(a) 
print minindex 
print '\n'  
   
print 'Flattened array:' 
print a.flatten()[minindex] 
print '\n'  

print 'Flattened array along axis 0:' 
minindex = np.argmin(a, axis = 0) 
print minindex
print '\n'

print 'Flattened array along axis 1:' 
minindex = np.argmin(a, axis = 1) 
print minindex

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

Applying argmax() function:
7

Index of maximum number in flattened array
[30 40 70 80 20 10 50 90 60]

Array containing indices of maximum along axis 0:
[1 2 0]

Array containing indices of maximum along axis 1:
[2 0 1]

Applying argmin() function:
5

Flattened array:
10

Flattened array along axis 0:
[0 1 1]

Flattened array along axis 1:
[0 2 0]

numpy.nonzero ()

numpy.nonzero() ฟังก์ชันส่งคืนดัชนีขององค์ประกอบที่ไม่ใช่ศูนย์ในอาร์เรย์อินพุต

ตัวอย่าง

import numpy as np 
a = np.array([[30,40,0],[0,20,10],[50,0,60]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying nonzero() function:' 
print np.nonzero (a)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[30 40 0]
 [ 0 20 10]
 [50 0 60]]

Applying nonzero() function:
(array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2]))

numpy.where ()

ฟังก์ชัน where () ส่งกลับดัชนีขององค์ประกอบในอาร์เรย์อินพุตที่เงื่อนไขที่กำหนดเป็นที่พอใจ

ตัวอย่าง

import numpy as np 
x = np.arange(9.).reshape(3, 3) 

print 'Our array is:' 
print x  

print 'Indices of elements > 3' 
y = np.where(x > 3) 
print y  

print 'Use these indices to get elements satisfying the condition' 
print x[y]

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

Indices of elements > 3
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))

Use these indices to get elements satisfying the condition
[ 4. 5. 6. 7. 8.]

numpy.extract ()

extract() ฟังก์ชันส่งคืนองค์ประกอบที่ตรงตามเงื่อนไขใด ๆ

import numpy as np 
x = np.arange(9.).reshape(3, 3) 

print 'Our array is:' 
print x  

# define a condition 
condition = np.mod(x,2) == 0 

print 'Element-wise value of condition' 
print condition  

print 'Extract elements using condition' 
print np.extract(condition, x)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

Element-wise value of condition
[[ True False True]
 [False True False]
 [ True False True]]

Extract elements using condition
[ 0. 2. 4. 6. 8.]

เราได้เห็นแล้วว่าข้อมูลที่เก็บไว้ในหน่วยความจำของคอมพิวเตอร์นั้นขึ้นอยู่กับสถาปัตยกรรมที่ CPU ใช้ อาจเป็น endian น้อย (มีนัยสำคัญน้อยที่สุดจะถูกเก็บไว้ในที่อยู่ที่เล็กที่สุด) หรือ big-endian (ไบต์ที่สำคัญที่สุดในที่อยู่ที่เล็กที่สุด)

numpy.ndarray.byteswap ()

numpy.ndarray.byteswap() ฟังก์ชั่นสลับระหว่างสองการแสดง: bigendian และ little-endian

import numpy as np 
a = np.array([1, 256, 8755], dtype = np.int16) 

print 'Our array is:' 
print a  

print 'Representation of data in memory in hexadecimal form:'  
print map(hex,a)  
# byteswap() function swaps in place by passing True parameter 

print 'Applying byteswap() function:' 
print a.byteswap(True) 

print 'In hexadecimal form:' 
print map(hex,a) 
# We can see the bytes being swapped

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[1 256 8755]

Representation of data in memory in hexadecimal form:
['0x1', '0x100', '0x2233']

Applying byteswap() function:
[256 1 13090]

In hexadecimal form:
['0x100', '0x1', '0x3322']

ในขณะเรียกใช้ฟังก์ชันบางฟังก์ชันจะส่งคืนสำเนาของอาร์เรย์อินพุตในขณะที่บางส่วนส่งคืนมุมมอง เมื่อเนื้อหาถูกเก็บไว้ในตำแหน่งอื่นจะถูกเรียกCopy. หากในทางกลับกันมีการให้มุมมองที่แตกต่างกันของเนื้อหาหน่วยความจำเดียวกันเราเรียกมันว่าView.

ไม่มีสำเนา

การกำหนดอย่างง่ายจะไม่สร้างสำเนาของวัตถุอาร์เรย์ แต่จะใช้ id เดียวกัน () ของอาร์เรย์เดิมเพื่อเข้าถึง id() ส่งคืนตัวระบุสากลของวัตถุ Python ซึ่งคล้ายกับตัวชี้ใน C

นอกจากนี้การเปลี่ยนแปลงใด ๆ ในอย่างใดอย่างหนึ่งจะสะท้อนให้เห็นในอีกรายการหนึ่ง ตัวอย่างเช่นรูปร่างที่เปลี่ยนไปของรูปทรงหนึ่งจะเปลี่ยนรูปร่างของอีกรูปแบบหนึ่งด้วย

ตัวอย่าง

import numpy as np 
a = np.arange(6) 

print 'Our array is:' 
print a  

print 'Applying id() function:' 
print id(a)  

print 'a is assigned to b:' 
b = a 
print b  

print 'b has same id():' 
print id(b)  

print 'Change shape of b:' 
b.shape = 3,2 
print b  

print 'Shape of a also gets changed:' 
print a

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[0 1 2 3 4 5]

Applying id() function:
139747815479536

a is assigned to b:
[0 1 2 3 4 5]
b has same id():
139747815479536

Change shape of b:
[[0 1]
 [2 3]
 [4 5]]

Shape of a also gets changed:
[[0 1]
 [2 3]
 [4 5]]

ดูหรือสำเนาตื้น

NumPy มี ndarray.view()วิธีการซึ่งเป็นวัตถุอาร์เรย์ใหม่ที่ดูข้อมูลเดียวกันของอาร์เรย์เดิม ไม่เหมือนกับกรณีก่อนหน้านี้การเปลี่ยนแปลงขนาดของอาร์เรย์ใหม่จะไม่ทำให้มิติของต้นฉบับเปลี่ยนไป

ตัวอย่าง

import numpy as np 
# To begin with, a is 3X2 array 
a = np.arange(6).reshape(3,2) 

print 'Array a:' 
print a  

print 'Create view of a:' 
b = a.view() 
print b  

print 'id() for both the arrays are different:' 
print 'id() of a:'
print id(a)  
print 'id() of b:' 
print id(b)  

# Change the shape of b. It does not change the shape of a 
b.shape = 2,3 

print 'Shape of b:' 
print b  

print 'Shape of a:' 
print a

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Array a:
[[0 1]
 [2 3]
 [4 5]]

Create view of a:
[[0 1]
 [2 3]
 [4 5]]

id() for both the arrays are different:
id() of a:
140424307227264
id() of b:
140424151696288

Shape of b:
[[0 1 2]
 [3 4 5]]

Shape of a:
[[0 1]
 [2 3]
 [4 5]]

ส่วนของอาร์เรย์สร้างมุมมอง

ตัวอย่าง

import numpy as np 
a = np.array([[10,10], [2,3], [4,5]]) 

print 'Our array is:' 
print a  

print 'Create a slice:' 
s = a[:, :2] 
print s

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Our array is:
[[10 10]
 [ 2 3]
 [ 4 5]]

Create a slice:
[[10 10]
 [ 2 3]
 [ 4 5]]

สำเนาลึก

ndarray.copy()ฟังก์ชันสร้างสำเนาลึก เป็นสำเนาอาร์เรย์และข้อมูลที่สมบูรณ์และไม่ใช้ร่วมกับอาร์เรย์เดิม

ตัวอย่าง

import numpy as np 
a = np.array([[10,10], [2,3], [4,5]]) 

print 'Array a is:' 
print a  

print 'Create a deep copy of a:' 
b = a.copy() 
print 'Array b is:' 
print b 

#b does not share any memory of a 
print 'Can we write b is a' 
print b is a  

print 'Change the contents of b:' 
b[0,0] = 100 

print 'Modified array b:' 
print b  

print 'a remains unchanged:' 
print a

มันจะสร้างผลลัพธ์ต่อไปนี้ -

Array a is:
[[10 10]
 [ 2 3]
 [ 4 5]]

Create a deep copy of a:
Array b is:
[[10 10]
 [ 2 3]
 [ 4 5]]
Can we write b is a
False

Change the contents of b:
Modified array b:
[[100 10]
 [ 2 3]
 [ 4 5]]

a remains unchanged:
[[10 10]
 [ 2 3]
 [ 4 5]]

แพ็คเกจ NumPy มีไลบรารีเมทริกซ์ numpy.matlib. โมดูลนี้มีฟังก์ชันที่ส่งคืนเมทริกซ์แทนอ็อบเจ็กต์ ndarray

matlib.empty ()

matlib.empty()ฟังก์ชันส่งคืนเมทริกซ์ใหม่โดยไม่ต้องเริ่มต้นรายการ ฟังก์ชันรับพารามิเตอร์ต่อไปนี้

numpy.matlib.empty(shape, dtype, order)

ที่ไหน

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

shape

int หรือ tuple ของ int การกำหนดรูปร่างของเมทริกซ์ใหม่

2

Dtype

ไม่จำเป็น. ชนิดข้อมูลของผลลัพธ์

3

order

C หรือ F

ตัวอย่าง

import numpy.matlib 
import numpy as np 

print np.matlib.empty((2,2)) 
# filled with random data

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[ 2.12199579e-314,   4.24399158e-314] 
 [ 4.24399158e-314,   2.12199579e-314]]

numpy.matlib.zeros ()

ฟังก์ชันนี้จะส่งคืนเมทริกซ์ที่เต็มไปด้วยศูนย์

import numpy.matlib 
import numpy as np 
print np.matlib.zeros((2,2))

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[ 0.  0.] 
 [ 0.  0.]]

numpy.matlib.ones ()

ฟังก์ชันนี้จะส่งคืนเมทริกซ์ที่เต็มไปด้วย 1s

import numpy.matlib 
import numpy as np 
print np.matlib.ones((2,2))

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[ 1.  1.] 
 [ 1.  1.]]

numpy.matlib.eye ()

ฟังก์ชันนี้จะส่งคืนเมทริกซ์ที่มี 1 ตามเส้นทแยงมุมและเลขศูนย์ที่อื่น ฟังก์ชันรับพารามิเตอร์ต่อไปนี้

numpy.matlib.eye(n, M,k, dtype)

ที่ไหน

ซีเนียร์ พารามิเตอร์และคำอธิบาย
1

n

จำนวนแถวในเมทริกซ์ผลลัพธ์

2

M

จำนวนคอลัมน์ค่าเริ่มต้นคือ n

3

k

ดัชนีของเส้นทแยงมุม

4

dtype

ชนิดข้อมูลของผลลัพธ์

ตัวอย่าง

import numpy.matlib 
import numpy as np 
print np.matlib.eye(n = 3, M = 4, k = 0, dtype = float)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[ 1.  0.  0.  0.] 
 [ 0.  1.  0.  0.] 
 [ 0.  0.  1.  0.]]

numpy.matlib.identity ()

numpy.matlib.identity()ฟังก์ชันจะส่งคืนเมทริกซ์เอกลักษณ์ของขนาดที่กำหนด เมทริกซ์เอกลักษณ์คือเมทริกซ์สี่เหลี่ยมที่มีองค์ประกอบแนวทแยงทั้งหมดเป็น 1

import numpy.matlib 
import numpy as np 
print np.matlib.identity(5, dtype = float)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[ 1.  0.  0.  0.  0.] 
 [ 0.  1.  0.  0.  0.] 
 [ 0.  0.  1.  0.  0.] 
 [ 0.  0.  0.  1.  0.] 
 [ 0.  0.  0.  0.  1.]]

numpy.matlib.rand ()

numpy.matlib.rand() ฟังก์ชันส่งคืนเมทริกซ์ของขนาดที่กำหนดซึ่งเต็มไปด้วยค่าสุ่ม

ตัวอย่าง

import numpy.matlib 
import numpy as np 
print np.matlib.rand(3,3)

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[ 0.82674464  0.57206837  0.15497519] 
 [ 0.33857374  0.35742401  0.90895076] 
 [ 0.03968467  0.13962089  0.39665201]]

Noteเมทริกซ์นั้นเป็นสองมิติเสมอในขณะที่ ndarray เป็นอาร์เรย์ n มิติ วัตถุทั้งสองสามารถเปลี่ยนแปลงได้ระหว่างกัน

ตัวอย่าง

import numpy.matlib 
import numpy as np  

i = np.matrix('1,2;3,4') 
print i

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[1  2] 
 [3  4]]

ตัวอย่าง

import numpy.matlib 
import numpy as np  

j = np.asarray(i) 
print j

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[1  2] 
 [3  4]]

ตัวอย่าง

import numpy.matlib 
import numpy as np  

k = np.asmatrix (j) 
print k

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[[1  2] 
 [3  4]]

แพ็คเกจ NumPy ประกอบด้วย numpy.linalgโมดูลที่มีฟังก์ชันทั้งหมดที่จำเป็นสำหรับพีชคณิตเชิงเส้น ฟังก์ชันที่สำคัญบางอย่างในโมดูลนี้อธิบายไว้ในตารางต่อไปนี้

ซีเนียร์ ฟังก์ชั่นและคำอธิบาย
1 จุด

ผลิตภัณฑ์ดอทของสองอาร์เรย์

2 vdot

ดอทผลคูณของเวกเตอร์สองตัว

3 ด้านใน

ผลิตภัณฑ์ภายในของสองอาร์เรย์

4 Matmul

ผลคูณเมทริกซ์ของสองอาร์เรย์

5 ดีเทอร์มิแนนต์

คำนวณดีเทอร์มิแนนต์ของอาร์เรย์

6 แก้

แก้สมการเมทริกซ์เชิงเส้น

7 Inv

ค้นหาผกผันการคูณของเมทริกซ์

Matplotlib เป็นไลบรารีพล็อตสำหรับ Python ใช้ร่วมกับ NumPy เพื่อจัดเตรียมสภาพแวดล้อมที่เป็นทางเลือกโอเพ่นซอร์สที่มีประสิทธิภาพสำหรับ MatLab นอกจากนี้ยังสามารถใช้กับชุดเครื่องมือกราฟิกเช่น PyQt และ wxPython

โมดูล Matplotlib เขียนขึ้นครั้งแรกโดย John D. Hunter ตั้งแต่ปี 2012 Michael Droettboom เป็นผู้พัฒนาหลัก ปัจจุบัน Matplotlib ver. 1.5.1 เป็นเวอร์ชันเสถียรที่พร้อมใช้งาน แพคเกจที่มีอยู่ในการกระจายไบนารีเช่นเดียวกับในรูปแบบรหัสที่มาในwww.matplotlib.org

ตามปกติแพ็กเกจจะถูกนำเข้าสู่สคริปต์ Python โดยเพิ่มคำสั่งต่อไปนี้ -

from matplotlib import pyplot as plt

ที่นี่ pyplot()เป็นฟังก์ชันที่สำคัญที่สุดในไลบรารี matplotlib ซึ่งใช้ในการลงจุดข้อมูล 2 มิติ สคริปต์ต่อไปนี้จะพล็อตสมการy = 2x + 5

ตัวอย่าง

import numpy as np 
from matplotlib import pyplot as plt 

x = np.arange(1,11) 
y = 2 * x + 5 
plt.title("Matplotlib demo") 
plt.xlabel("x axis caption") 
plt.ylabel("y axis caption") 
plt.plot(x,y) 
plt.show()

วัตถุ ndarray x ถูกสร้างขึ้นจาก np.arange() function เป็นค่าบน x axis. ค่าที่สอดคล้องกันบนy axis จะถูกเก็บไว้ในอื่น ndarray object y. ค่าเหล่านี้พล็อตโดยใช้plot() ฟังก์ชันของโมดูลย่อย pyplot ของแพ็คเกจ matplotlib

การแสดงกราฟิกจะแสดงโดย show() ฟังก์ชัน

รหัสด้านบนควรสร้างผลลัพธ์ต่อไปนี้ -

แทนที่จะเป็นกราฟเชิงเส้นคุณสามารถแสดงค่าที่ไม่เหมาะสมได้โดยการเพิ่มสตริงรูปแบบลงในไฟล์ plot()ฟังก์ชัน สามารถใช้อักขระการจัดรูปแบบต่อไปนี้ได้

ซีเนียร์ ตัวละครและคำอธิบาย
1

'-'

ลักษณะเส้นทึบ

2

'--'

ลักษณะเส้นประ

3

'-.'

สไตล์เส้นประ

4

':'

ลักษณะเส้นประ

5

'.'

เครื่องหมายจุด

6

','

เครื่องหมายพิกเซล

7

'o'

เครื่องหมายวงกลม

8

'v'

เครื่องหมาย Triangle_down

9

'^'

เครื่องหมาย Triangle_up

10

'<'

เครื่องหมาย Triangle_left

11

'>'

เครื่องหมาย Triangle_right

12

'1'

เครื่องหมาย Tri_down

13

'2'

เครื่องหมาย Tri_up

14

'3'

เครื่องหมาย Tri_left

15

'4'

เครื่องหมาย Tri_right

16

's'

เครื่องหมายสี่เหลี่ยม

17

'p'

เครื่องหมายห้าเหลี่ยม

18

'*'

เครื่องหมายดาว

19

'h'

เครื่องหมาย Hexagon1

20

'H'

เครื่องหมาย Hexagon2

21

'+'

เครื่องหมายบวก

22

'x'

เครื่องหมาย X

23

'D'

เครื่องหมายเพชร

24

'd'

เครื่องหมาย Thin_diamond

25

'|'

เครื่องหมาย Vline

26

'_'

เครื่องหมาย Hline

นอกจากนี้ยังมีการกำหนดตัวย่อสีต่อไปนี้

ตัวละคร สี
'b' สีน้ำเงิน
'g' เขียว
'r' แดง
'ค' สีฟ้า
'm' ม่วงแดง
'y' สีเหลือง
'k' ดำ
'w' สีขาว

หากต้องการแสดงวงกลมที่แสดงจุดแทนเส้นในตัวอย่างข้างต้นให้ใช้ “ob” เป็นสตริงรูปแบบในฟังก์ชัน plot ()

ตัวอย่าง

import numpy as np 
from matplotlib import pyplot as plt 

x = np.arange(1,11) 
y = 2 * x + 5 
plt.title("Matplotlib demo") 
plt.xlabel("x axis caption") 
plt.ylabel("y axis caption") 
plt.plot(x,y,"ob") 
plt.show()

รหัสด้านบนควรสร้างผลลัพธ์ต่อไปนี้ -

แผนไซน์เวฟ

สคริปต์ต่อไปนี้สร้างไฟล์ sine wave plot ใช้ matplotlib

ตัวอย่าง

import numpy as np 
import matplotlib.pyplot as plt  

# Compute the x and y coordinates for points on a sine curve 
x = np.arange(0, 3 * np.pi, 0.1) 
y = np.sin(x) 
plt.title("sine wave form") 

# Plot the points using matplotlib 
plt.plot(x, y) 
plt.show()

แผนการย่อย ()

ฟังก์ชัน subplot () ช่วยให้คุณสามารถพล็อตสิ่งต่างๆในรูปเดียวกันได้ ในสคริปต์ต่อไปนี้sine และ cosine values กำลังวางแผน

ตัวอย่าง

import numpy as np 
import matplotlib.pyplot as plt  
   
# Compute the x and y coordinates for points on sine and cosine curves 
x = np.arange(0, 3 * np.pi, 0.1) 
y_sin = np.sin(x) 
y_cos = np.cos(x)  
   
# Set up a subplot grid that has height 2 and width 1, 
# and set the first such subplot as active. 
plt.subplot(2, 1, 1)
   
# Make the first plot 
plt.plot(x, y_sin) 
plt.title('Sine')  
   
# Set the second subplot as active, and make the second plot. 
plt.subplot(2, 1, 2) 
plt.plot(x, y_cos) 
plt.title('Cosine')  
   
# Show the figure. 
plt.show()

รหัสด้านบนควรสร้างผลลัพธ์ต่อไปนี้ -

บาร์()

pyplot submodule ให้ bar()ฟังก์ชันในการสร้างกราฟแท่ง ตัวอย่างต่อไปนี้สร้างกราฟแท่งของสองชุดx และ y อาร์เรย์

ตัวอย่าง

from matplotlib import pyplot as plt 
x = [5,8,10] 
y = [12,16,6]  

x2 = [6,9,11] 
y2 = [6,15,7] 
plt.bar(x, y, align = 'center') 
plt.bar(x2, y2, color = 'g', align = 'center') 
plt.title('Bar graph') 
plt.ylabel('Y axis') 
plt.xlabel('X axis')  

plt.show()

รหัสนี้ควรสร้างผลลัพธ์ต่อไปนี้ -

NumPy มี numpy.histogram()ฟังก์ชันที่เป็นการแสดงกราฟิกของการแจกแจงความถี่ของข้อมูล รูปสี่เหลี่ยมที่มีขนาดแนวนอนเท่ากันซึ่งสอดคล้องกับช่วงคลาสที่เรียกว่าbin และ variable height สอดคล้องกับความถี่

numpy.histogram ()

ฟังก์ชัน numpy.histogram () รับอาร์เรย์อินพุตและ bins เป็นพารามิเตอร์สองตัว องค์ประกอบต่อเนื่องใน bin array ทำหน้าที่เป็นขอบเขตของแต่ละ bin

import numpy as np 
   
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) 
np.histogram(a,bins = [0,20,40,60,80,100]) 
hist,bins = np.histogram(a,bins = [0,20,40,60,80,100]) 
print hist 
print bins

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[3 4 5 2 1]
[0 20 40 60 80 100]

plt ()

Matplotlib สามารถแปลงการแสดงตัวเลขของฮิสโตแกรมเป็นกราฟ plt() function ของโมดูลย่อย pyplot ใช้อาร์เรย์ที่มีข้อมูลและ bin array เป็นพารามิเตอร์และแปลงเป็นฮิสโตแกรม

from matplotlib import pyplot as plt 
import numpy as np  
   
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) 
plt.hist(a, bins = [0,20,40,60,80,100]) 
plt.title("histogram") 
plt.show()

ควรให้ผลลัพธ์ดังต่อไปนี้ -

อ็อบเจ็กต์ ndarray สามารถบันทึกและโหลดจากไฟล์ดิสก์ ฟังก์ชัน IO ที่พร้อมใช้งาน ได้แก่ -

  • load() และ save() ฟังก์ชันจัดการ / numPy ไฟล์ไบนารี (ด้วย npy ส่วนขยาย)

  • loadtxt() และ savetxt() ฟังก์ชันจัดการไฟล์ข้อความปกติ

NumPy แนะนำรูปแบบไฟล์อย่างง่ายสำหรับวัตถุ ndarray นี้.npy ไฟล์เก็บข้อมูลรูปร่าง dtype และข้อมูลอื่น ๆ ที่จำเป็นในการสร้าง ndarray ใหม่ในไฟล์ดิสก์เพื่อให้อาร์เรย์ถูกดึงออกมาอย่างถูกต้องแม้ว่าไฟล์จะอยู่บนเครื่องอื่นที่มีสถาปัตยกรรมต่างกัน

numpy.save ()

numpy.save() ไฟล์เก็บอาร์เรย์อินพุตในไฟล์ดิสก์ด้วย npy ส่วนขยาย.

import numpy as np 
a = np.array([1,2,3,4,5]) 
np.save('outfile',a)

ในการสร้างอาร์เรย์ใหม่จาก outfile.npy, ใช้ load() ฟังก์ชัน

import numpy as np 
b = np.load('outfile.npy') 
print b

มันจะสร้างผลลัพธ์ต่อไปนี้ -

array([1, 2, 3, 4, 5])

ฟังก์ชัน save () และ load () ยอมรับพารามิเตอร์บูลีนเพิ่มเติม allow_pickles. Pickle ใน Python ใช้เพื่อทำให้เป็นซีเรียลไลซ์และยกเลิกการทำให้เป็นอนุกรมวัตถุก่อนที่จะบันทึกหรืออ่านจากไฟล์ดิสก์

บันทึกข้อความ ()

การจัดเก็บและการดึงข้อมูลอาร์เรย์ในรูปแบบไฟล์ข้อความอย่างง่ายทำได้ด้วย savetxt() และ loadtxt() ฟังก์ชั่น.

ตัวอย่าง

import numpy as np 

a = np.array([1,2,3,4,5]) 
np.savetxt('out.txt',a) 
b = np.loadtxt('out.txt') 
print b

มันจะสร้างผลลัพธ์ต่อไปนี้ -

[ 1.  2.  3.  4.  5.]

ฟังก์ชัน savetxt () และ loadtxt () ยอมรับพารามิเตอร์ทางเลือกเพิ่มเติมเช่นส่วนหัวส่วนท้ายและตัวคั่น