Numpy 是 第 三 方 程 序 库,所以在使用 Numpy 之前 必须安装 Numpy。如果使用 的是 Anaconda Python 开发环 境,那么 Numpy 已经集成到 Anaconda 环境中了,不需要再安装。如果使用的是官方开发环境,可以使用 pip 命令安装 Numpy,语法格式如下:
pip install numpy
# coding: utf-8
import numpy as np
a = np.arange(10)
print(a)
result:
[0 1 2 3 4 5 6 7 8 9]
在上面的程序中只涉及 numpy 模块中的一个 arange 函数,该函数可以传入一个整数类型的参数 n,函数返回值看着像一个列表,其实返回值类型是 numpy.ndarray。这是 Numpy 中特有的数组类型。如果传入 arange 函数的参数值是 n,那么 arange 函数会返回 0 到 n-1 的 ndarray 类型的数组。类似于range方法
numpy.array(object, dtype = None, copy = True, order = None, subok = False
名称 | 描述 |
---|---|
object | 数组或嵌套的序列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否需要复制,可选 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | subok (即原样返回子类)默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
以下是array方法的示例
import numpy as np
# 创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1) # 输出: [1 2 3 4 5]
# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
# 输出:
# [[1 2 3]
# [4 5 6]]
# 创建指定数据类型的数组
arr3 = np.array([1, 2, 3], dtype=float)
print(arr3) # 输出: [1. 2. 3.]
arange
是 NumPy 库中的一个函数,用于创建一个按指定步长递增的数组。它的语法如下:
numpy.arange(start, stop, step, dtype=None)
参数说明:
start
:指定序列的起始值(包含)。stop
:指定序列的结束值(不包含)。step
:指定序列中的元素之间的步长。dtype
:指定返回数组的数据类型。可选参数,默认为 None
。以下是一些 arange
方法的示例:
import numpy as np
# 生成一个从 0 到 4(不包含 4)的整数序列
a = np.arange(4)
print(a) # [0 1 2 3]
# 生成一个从 1 到 9(不包含 9)的整数序列,步长为 2
b = np.arange(1, 9, 2)
print(b) # [1 3 5 7]
# 生成一个从 0 到 1(不包含 1)的浮点数序列,步长为 0.1
c = np.arange(0, 1, 0.1)
print(c) # [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
在上述示例中,我们使用 arange
方法创建了不同的序列,包括整数序列和浮点数序列,通过设置不同的起始值、结束值和步长来控制序列的生成。
ndarray 数组除了可以使 用底层 ndarray 构造器来创建 外,也可以通过以下几种方式来创建。
zeros 创建指定大小的数组,数组元素以0来填充: numpy.zeros(shape, dtype=float, order='C')
"C"代表C语言顺序,"F"代表Fortran语言顺序。
在C语言中,多维数组的元素是按行优先存储的,也称为行优先存储顺序。这意味着数组的第一维(行)的元素在内存中是相邻存储的,然后是第二维(列)的元素,以此类推。
在Fortran语言中,多维数组的元素是按列优先存储的,也称为列优先存储顺序。这意味着数组的第一维(列)的元素在内存中是相邻存储的,然后是第二维(行)的元素,以此类推。
这两种存储顺序在内存中的布局方式不同,选择适当的存储顺序可以提高数组访问的效率。默认情况下,NumPy数组使用C语言顺序(行优先)存储元素,但可以通过指定order
参数来选择使用Fortran语言顺序(列优先)存储元素。
"C"的全称是C-style,"F"的全称是Fortran-style。
order属性很少使用
numpy.empty(shape, dtype = float, order = 'C')
参数 | 描述 |
---|---|
shape | 数组形状 |
dtype | 数据类型,可选 |
order | 有"C"和"F"两个选项,分别代表行优先和列优先,在计算机内存中的存储元素的顺序。 |
linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数 | 描述 |
---|---|
start | 序列的起始值 |
stop | 序列的终止值,如果 endpoint 为 true,该值包含于数列中 |
num | 要生成的等步长的样本数量,默认为 50 |
endpoint | 该值为 True 时,数列中中包含 stop 值,反之不包含,默认是 True |
retstep(return step) | 如果为 True 时,生成的数组中会显示间距,反之不显示 |
dtype | ndarray 的数据类型 |
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None
参数 | 描述 |
---|---|
start | 序列的起始值,计算方式为 base ** start |
stop | 序列的终止值,计算方式为 base ** stop 。如果 endpoint 为 true,该值包含于数列中 |
num | 要生成的等步长的样本数量,默认为 50 |
endpoint | 该值为 True 时,数列中包含 stop 值,反之不包含,默认为 True |
base | 对数 log 的底数 |
dtype | ndarray 的数据类型 |
- 数组存放的是同类型的数据。在大多数编程语言中,数组是一种数据结构,用于存储相同类型的元素,这些元素在内存中是连续存放的。数组的同一维度中的元素必须具有相同的数据类型,这样才能有效地进行内存分配和操作。
- 例如,在Python的NumPy库中,数组是同构的,也就是说数组中的元素必须具有相同的数据类型,如整数、浮点数、布尔值等。这种同构性使得数组能够高效地进行向量化操作和数值计算。
- 然而,有些编程语言也支持存放不同类型的元素的数组,称为异构数组。这样的数组可以存放不同类型的数据,但在访问和操作时可能需要进行类型转换和处理。异构数组的使用相对较少,常见的数据结构如结构体或字典更适合存放不同类型的数据。
# coding: utf-8
import numpy as np
# zeros方法创建数组
# zeros默认表示形式是浮点数
x4 = np.zeros(5)
print(x4)
# 设置类型为整数
y = np.zeros((5,), dtype=int)
print(y)
z = np.zeros((2, 2))
print(z)
print('=' * 20)
# ones方法创建数组
# ones默认表示形式是浮点数
x5 = np.ones(5)
print(x5)
y2 = np.ones((3, 4), dtype=int)
print(y2)
print('=' * 20)
# empty方法
x6 = np.empty([3, 2], dtype=int)
print(x6)
print('=' * 20)
# linspace方法, 创建一个等差数列组成的一维数组
x7 = np.linspace(1, 10, num=10)
print(x7)
# logspace方法,用于创建一个等比数列组成的数组
x8 = np.logspace(0, 9, num=10, base=2)
print(x8)
result:
[0. 0. 0. 0. 0.]
[0 0 0 0 0]
[[0. 0.]
[0. 0.]]
====================
[1. 1. 1. 1. 1.]
[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
====================
[[-93134448 473]
[-93132912 473]
[ 0 0]]
====================
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
[ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]
进程已结束,退出代码0