Numpy数值类型与数值运算-03

1. Numpy 数值类型

NumPy是一个用Python编写的开源数学软件库,能够处理来自任何其它语言的数值数据。在NumPy中定义了多种基本数值类型,包括整型、浮点型、复数型等。下面来逐一介绍一下这些基本的数值类型。

1.1 整型(int)

整型是一种基本的数据类型,用于表示整数。在NumPy中,整型有多种不同的类型,如下所示:

import numpy as np

a = np.int8(1)

b = np.int16(2)

c = np.int32(3)

d = np.int64(4)

print(a)

print(b)

print(c)

print(d)

输出结果为:

1

2

3

4

整型的大小在不同的系统上可能会有所不同,但通常情况下,np.int32和np.int64对应于C语言中的int型和long型。

1.2 浮点数(float)

浮点数是一种基本的数据类型,用于表示实数。在NumPy中,浮点数有多种不同的类型,如下所示:

f = np.float16(1.0)

g = np.float32(2.0)

h = np.float64(3.0)

print(f)

print(g)

print(h)

输出结果为:

1.0

2.0

3.0

NumPy中的浮点数采用IEEE 754标准表示,np.float32对应于单精度浮点数(32位),np.float64对应于双精度浮点数(64位)。

1.3 复数(complex)

复数是一种基本的数据类型,用于表示具有实部和虚部的数。在NumPy中,复数有多种不同的类型,如下所示:

z1 = np.complex64(1.0 + 2.0j)

z2 = np.complex128(3.0 + 4.0j)

print(z1)

print(z2)

输出结果为:

(1+2j)

(3+4j)

np.complex64对应于单精度复数(64位),np.complex128对应于双精度复数(128位)。

1.4 布尔(bool)

布尔是一种基本的数据类型,用于表示True和False两个值。在NumPy中,布尔类型与整型类型可以互相转换。

bool_arr = np.array([True, False, True, False])

int_arr = bool_arr.astype(np.int32)

print(bool_arr)

print(int_arr)

输出结果为:

[ True False True False]

[1 0 1 0]

1.5 字符串(string)

字符串是一种基本的数据类型,用于表示文本。在NumPy中,字符串类型可以通过指定字节数和编码来创建。

str_arr = np.array(['hello', 'world'], dtype=np.string_)

print(str_arr)

输出结果为:

[b'hello' b'world']

2. Numpy 数值运算

NumPy 支持各种数学运算,例如加、减、乘、除等操作。可以使用NumPy数组来执行这些运算。

2.1 数组运算

在NumPy中,数组可以进行逐元素计算,例如加、减、乘、除等操作。需要注意的是,每个操作数必须具有相同的维度和形状。

a = np.array([1, 2, 3])

b = np.array([4, 5, 6])

c = a + b

d = a - b

e = a * b

f = a / b

print(c)

print(d)

print(e)

print(f)

输出结果为:

[5 7 9]

[-3 -3 -3]

[ 4 10 18]

[0.25 0.4 0.5 ]

2.2 矩阵运算

在NumPy中,矩阵可以进行矩阵乘法、矩阵转置等操作。需要注意的是,矩

阵乘法的要求是前一个矩阵的列数等于后一个矩阵的行数。

A = np.array([[1, 2], [3, 4]])

B = np.array([[5, 6], [7, 8]])

C = np.dot(A, B)

D = A.transpose()

print(C)

print(D)

输出结果为:

[[19 22]

[43 50]]

[[1 3]

[2 4]]

2.3 广播

广播是一种NumPy数组的特性,它使得不同形状的数组可以参与运算。广播规则如下:

如果两个数组的形状相同,则可以进行逐元素运算。

如果两个数组的形状不同,但是可以通过在某个维度上添加新的维度来变得相同,则可以进行广播。

如果两个数组的形状不同,而且不能通过广播使它们变得相同,则会抛出异常。

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

b = np.array([5, 6])

c = a * b

print(c)

输出结果为:

[[ 5 12]

[15 24]]

2.4 数值函数

NumPy还提供了许多数值函数,例如指数、对数、三角函数、数组的最大值和最小值等等。这些函数可以对数组中的每个元素进行计算。

a = np.array([1, 2, 3])

b = np.exp(a)

c = np.log(a)

d = np.sin(a)

print(b)

print(c)

print(d)

输出结果为:

[ 2.71828183 7.3890561 20.08553692]

[0. 0.69314718 1.09861229]

[0.84147098 0.90929743 0.14112001]

2.5 聚合函数

NumPy还提供了许多聚合函数,例如数组的和、平均数、标准差、方差、最大值和最小值等等。这些函数可以对整个数组进行计算。

a = np.array([1, 2, 3])

b = np.sum(a)

c = np.mean(a)

d = np.std(a)

print(b)

print(c)

print(d)

输出结果为:

6

2.0

0.816496580927726

2.6 数组索引与切片

在NumPy中,可以使用索引和切片操作从数组中取出元素或子数组。

2.6.1 索引

使用索引操作可以从数组中取出单个元素。

a = np.array([1, 2, 3])

b = a[1]

print(b)

输出结果为:

2

2.6.2 切片

使用切片操作可以从数组中取出一个子数组。

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

b = a[1:4]

print(b)

输出结果为:

[2 3 4]

2.7 随机数生成

在NumPy中,可以使用随机数生成器生成各种随机数。常用的随机数包括正态分布和均匀分布两种。

rng = np.random.RandomState(42)

a = rng.randn(5)

b = rng.uniform(0, 1, 5)

print(a)

print(b)

输出结果为:

[ 0.49671415 -0.1382643 0.64768854 1.52302986 -0.23415337]

[0.37454012 0.95071431 0.73199394 0.59865848 0.15601864]

3. 总结

本文介绍了NumPy中常用的数值类型和数值运算,其中包括整型、浮点型、复数型、布尔型和字符串型等基本数据类型,以及数组运算、矩阵运算、广播、数值函数、聚合函数、数组索引与切片等常用的数值操作。同时,本文还介绍了如何使用NumPy生成随机数。

后端开发标签