NumPy(Numerical Python)是 Python 语言的一个重要的扩展程序库,主要用于对多维数组执行计算。numpy库广泛应用于科学技术、数据分析、机器学习、数据可视化等领域,今天就让我们来学习一下关于numpy库的相关内容
一、函数简介
numpy库中有许多函数值得我们学习,今天我们就先学习一些基础的函数,如数组的创建。以下是这些函数的使用方法,建议结合后面例题学习。
| 函数 | 用法 |
|---|---|
| array | (object, dtype=None, copy=True, order=‘K’, subok=False, ndmin=0) |
| arange | ([start, ]stop, [step, ]dtype=None) |
| dtype | (dtype, align=False, copy=False[, metadata]) |
| zeros | (shape, dtype=float, order=‘C’, *, like=None) |
| zeros_like | (a, dtype=None, order=‘K’, subok=True, shape=None, *, device=None) |
| ones | (shape, dtype=None, order=‘C’, *, device=None, like=None) |
| ones_like | (a, dtype=None, order=‘K’, subok=True, shape=None, *, device=None)[source] |
二、函数的使用
1. 使用array创建数组
array(object, dtype=None, copy=True, order=‘K’, subok=False, ndmin=0)
object:可以是一个序列(如列表、元组)、嵌套序列(如二维列表)或其他可迭代对象。这是用于创建数组的数据来源。
dtype:指定数组中元素的数据类型。如果未指定,则根据输入数据自动推断。
copy:如果为 True,则复制输入对象;如果为 False,则在可能的情况下使用输入对象的引用。默认为 True。
order:指定数组在内存中的存储顺序,可以是 ‘C’(C 风格,行优先)、‘F’(Fortran 风格,列优先)或 ‘K’(尽可能匹配输入的顺序)。默认为 ‘K’。
subok:如果为 True,则返回的数组将是输入对象的子类;如果为 False,则返回的数组将始终是基类数组。默认为 False。
ndmin:指定结果数组的最小维数。如果输入数据的维数小于ndmin,则将其提升为指定的维数。默认为 0。
- object和dtype的例子
arr = np.array((1,2,3)) #等价于arr=np.array([1,2,3])
arr1 = np.array([1,2,3],dtype = float) #将数据类型定义为浮点型 等价于arr1 = np.array([1.,2.,3.])
print(arr1) #输出[1. 2. 3.]
- order的例子
arr = np.array([1,2,3])
arr1 = np.array(arr,copy = False) #当copy的值为False时,arr数组中的值会随arr1数组中的值改变
arr2 = np.array(arr) #copy的值默认为True
arr1[0] = 100
arr2[0] = 50
print(arr) #输出[100 2 3]
print(arr1)#输出[100 2 3]
print(arr2) #输出[50 2 3]
- subok的例子
import numpy as np
arr = np.mat([1,2,3]) #创建矩阵
arr1 = np.array(arr,subok = True)
arr2 = np.array(arr) #subok默认为False
print(type(arr)) #输出<class 'numpy.matrix'>
print(type(arr1)) #输出<class 'numpy.matrix'>
print(type(arr2)) #输出<class 'numpy.ndarray'>

4. ndim的例子
import numpy as np #调用numpy库并从重命名为np,方便后面使用
arr_ndim1 = np.array([1,2,3]) #创建一个一维数组
arr_ndim2 = np.array([1,2,3],ndmin=2) #创建一个二维数组
print(arr_ndim1) #输出为 [1,2,3]
print(arr_ndim1.ndim) #求arr_ndim1的维度,返回值为1
print(arr_ndim2) #[[1 2 3]]
print(arr_ndim2.ndim)#求arr_ndim2的维度,返回值为2

2. 使用arange创建数组
start:起始值,可选参数,默认为 0。它确定了生成数组的起始点。
例如,np.arange(3),由于没有指定起始值,默认从 0 开始,生成包含 0、1、2 的数组。而 np.arange(2,5)指定起始值为 2,生成 2、3、4。
stop:终止值,必选参数。这个值本身不在生成的数组中。
比如,np.arange(0,5)生成的数组不包含数字 5。
step:步长,可选参数,默认为 1。它决定了数组元素之间的间隔。
例如,np.arange(0,10,2)以步长为 2 生成数组 0、2、4、6、8。
dtype:数据类型,可选参数。如果不指定,NumPy 会根据参数自动推断合适的数据类型。
例如,np.arange(0,5,dtype=np.float32)生成的数据类型为单精度浮点数的数组。
import numpy as np #调用numpy库并从重命名为np,方便后面使用
arr = np.arange(10) #start默认为0,step默认为1
arr1 = np.arange(1,10) #将start设置为1
arr2 = np.arange(1,10,2) #将start设置为1,step设置为2
arr3 = np.arange(0,5,dtype = float) #将数据类型设置为单精度浮点型
print(arr) #输出[0 1 2 3 4 5 6 7 8 9]
print(arr1) #输出[1 2 3 4 5 6 7 8 9]
print(arr2) #输出[1 3 5 7 9]
print(arr3) #输出[0. 1. 2. 3. 4.]

3.使用zeros和zeros_like创建数组
shape:指定要创建的数组的形状,可以是一个整数表示一维数组的长度,也可以是一个元组表示多维数组的维度。
dtype:指定数组的数据类型,默认为 float(浮点数)。
order:控制数组在内存中的存储顺序,有 ‘C’(行优先,C 语言风格)和 ‘F’(列优先,Fortran 语言风格)两种选项,默认为 ‘C’。
一般情况下,对于大多数应用场景,这个参数不需要特别指定。
like:可以传入一个已有的数组,使新创建的数组与传入的数组具有相同的形状、数据类型和存储顺序等属性。
示例:如果有一个数组 a,可以使用 np.zeros_like(a)来创建一个与 a 形状相同且元素全为 0 的数组。
import numpy as np #调用numpy库并从重命名为np,方便后面使用
arr = np.zeros(3) #shape为3
arr_int = np.zeros(3,dtype=int) #创建整形数组,dtype默认为float
arr_like = np.zeros_like(arr) #创建和arr相同维度的数组
arr1 = np.zeros([2,3])
#自己尝试下创建一个和arr1相同纬度的数组
print("这是arr",arr)
print("这是arr_int",arr_int)
print("这是arr_like",arr_like)
print("这是arr1",arr1)

4.使用ones和ones_like创建数组
在用法上与zeros和zeros_like相同
区别:ones创建的数组是用1填充,而zeros创建的数组是用0填充
拓展与思考:np.eye创建的是对角线为1的数组,那用法是否与zeros和ones一样呢
import numpy as np #调用numpy库并从重命名为np,方便后面使用
arr = np.ones(3) #shape为3
arr_int = np.ones(3,dtype=int) #创建整形数组,dtype默认为float
arr_like = np.ones_like(arr) #创建和arr相同维度的数组
arr1 = np.ones([2,3])
arr1_like = np.ones_like(arr1) #创建和arr1相同维度的数组,同理可知上面zeros的答案与此相似
print("这是arr",arr)
print("这是arr_int",arr_int)
print("这是arr_like",arr_like)
print("这是arr1",arr1)
print("这是arr1_like",arr1_like)

以上便是本节内容,新手小白学习记录日常,如果有欠妥部分还望指出并给予些许建议。
2525

被折叠的 条评论
为什么被折叠?



