Python中创建ndarrary的20中方法讲解
程序员文章站
2022-07-02 18:33:53
本文介绍了基础的、常用的创建ndarrary的多种方法,附带示例代码。
一、通过ndarray创建
import numpy as np
1.1 一维数组
a =...
本文介绍了基础的、常用的创建ndarrary的多种方法,附带示例代码。
一、通过ndarray创建
import numpy as np1.1 一维数组
a = np.array([1, 2, 3]) a
array([1, 2, 3])1.2 二维数组
np.array([[1, 2, 3, 4], [2, 3, 4, 5]])
array([[1, 2, 3, 4], [2, 3, 4, 5]])1.3 三维数组
arr1 = np.array([ [ [1, 2, 32, 23], [23, 3, 23, 3] ], [ [1, 2, 3, 4], [23, 3, 4, 32] ] ]) print(arr1) print(type(arr1)) arr1
[[[ 1 2 32 23] [23 3 23 3]] [[ 1 2 3 4] [23 3 4 32]]] array([[[ 1, 2, 32, 23], [23, 3, 23, 3]], [[ 1, 2, 3, 4], [23, 3, 4, 32]]])二、创建ndarrary的常见函数 2. zeros()函数,指定一个维度元组(形状参数),返回全0的ndarrary
arr2 = np.zeros((2, 4)) arr2
array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.]])3. ones()函数,指定一个维度元组(形状参数),返回全1的ndarrary
arr3 = np.ones((4, 4)) arr3
array([[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]])4. empty()函数,指定一个维度元组(形状参数),返回一个值(垃圾值)为被初始化的ndarrary
arr4 = np.empty((2, 2)) arr4
array([[ 7.89119642e-312, 4.22795269e-307], [ 9.34608432e-307, 1.11258854e-306]])三、其他创建ndarrary的方式 5. numpy.arange([start ], stop[, step ], dtype=None)函数,左开右闭
arr5 = np.arange(1, 10, 1) arr5
array([1, 2, 3, 4, 5, 6, 7, 8, 9])6. numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)函数, 产生一个等差数列,左闭右闭
arr6 = np.linspace(0, 4, 5) arr6
array([ 0., 1., 2., 3., 4.])7. numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)函数,底数默认为10
arr7 = np.logspace(0, 4, 5, base=2) arr7
array([ 1., 2., 4., 8., 16.])8. numpy.eye(N, M=None, k=0, dtype=
arr8 = np.eye(4, 3) arr8
array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.], [ 0., 0., 0.]])9. numpy.zeros_like(a, dtype=None, order=’K’, subok=True)函数,返回一个与a的形状参数一样的元素全部为0的数组
Return an array of zeros with the same shape and type as a given array.
参数subok,是否继承a的数据类型;
参数order,指定返回的结果在内存中的存储布局,默认是’K’,表示尽可能与a相同。
# 返回一个与arr8形状应的全0数组 arr9 = np.zeros_like(arr8) arr9
array([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]])10. numpy.ones_like(a, dtype=None, order=’K’, subok=True)函数,
返回一个与a的形状参数一样且元素全为0的数组
# 返回一个与ar9形状应的全0数组 arr10 = np.ones_like(arr9) arr10
array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])11. numpy.empty_like(a, dtype=None, order=’K’, subok=True)函数,返回一个与a形状相同且全部值为垃圾值(随机值)的数组
Return a new array with the same shape and type as a given array.
arr11 = np.empty_like(np.ones((5,4))) arr11
array([[ 7.89102294e-312, 6.27463370e-322, 0.00000000e+000, 0.00000000e+000], [ 8.45593933e-307, 5.30276956e+180, 7.70748458e-043, 4.57487963e-071], [ 3.45618033e-086, 3.35860426e-143, 6.01433264e+175, 6.93885958e+218], [ 5.56218858e+180, 3.94356143e+180, 4.75084178e-037, 1.24689504e-047], [ 3.85156077e-057, 2.06073242e+184, 4.71530148e-143, 1.50008929e+248]])12. numpy.copy(a, order=’K’)函数,返回与a一样的数组
Return an array copy of the given object.
# 属于深拷贝,修改复制数组,对原数组没有影响 arr12 = np.copy(arr11) arr12[0, 0] = 1 arr12
array([[ 1.00000000e+000, 6.27463370e-322, 0.00000000e+000, 0.00000000e+000], [ 8.45593933e-307, 5.30276956e+180, 7.70748458e-043, 4.57487963e-071], [ 3.45618033e-086, 3.35860426e-143, 6.01433264e+175, 6.93885958e+218], [ 5.56218858e+180, 3.94356143e+180, 4.75084178e-037, 1.24689504e-047], [ 3.85156077e-057, 2.06073242e+184, 4.71530148e-143, 1.50008929e+248]])13. numpy.identity(n, dtype=None)函数,返回一个n阶单位方阵
Return the identity array.
arr13 = np.identity(4) arr13
array([[ 1., 0., 0., 0.], [ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.]])14. numpy.fromfunction(function, shape, **kwargs)返回一个数组,元素的值由函数计算,形状由shape元组限制
注意:参数shape是一个元组,shape元组中的元素个数需要与函数中的参数个数一致,分别表示不同纬度。
arr20 = np.fromfunction(lambda x, y: x+y, shape=(3, 3)) print(arr20) arr21 = np.fromfunction(lambda x, y, z: x+y+z, shape=(3, 3, 3)) arr21
[[ 0. 1. 2.] [ 1. 2. 3.] [ 2. 3. 4.]] array([[[ 0., 1., 2.], [ 1., 2., 3.], [ 2., 3., 4.]], [[ 1., 2., 3.], [ 2., 3., 4.], [ 3., 4., 5.]], [[ 2., 3., 4.], [ 3., 4., 5.], [ 4., 5., 6.]]])15. numpy.mgrid函数
arr14 = np.mgrid[-1:3:2] # 表示从-1开始,步长为1,取2个数字 print(arr14) arr15 = np.mgrid[-1:3:2j] # 当加'j'时,表示左闭右闭,且取到2个数字 print(arr15) arr16 = np.mgrid[-1:3] # 当指定两个参数时,功能与numpy.arange()函数一样 print(arr16) arr18 = np.mgrid[0:5, 0:5] # 分别在两个维度上做填充 print(arr18)
[-1 1] [-1. 3.] [-1 0 1 2] [[[0 0 0 0 0] [1 1 1 1 1] [2 2 2 2 2] [3 3 3 3 3] [4 4 4 4 4]] [[0 1 2 3 4] [0 1 2 3 4] [0 1 2 3 4] [0 1 2 3 4] [0 1 2 3 4]]]16. numpy.ogrid函数
arr19 = np.ogrid[1:2] print(arr19) arr20 = np.ogrid[0:5, 0:5] print(arr20)
[1] [array([[0], [1], [2], [3], [4]]), array([[0, 1, 2, 3, 4]])]17. numpy.fromstring(string, dtype=float, count=-1, sep=’‘)函数,从字符串创建一个一维ndarrary
arr21 = np.fromstring('1 2 3 4', sep=' ') arr21
array([ 1., 2., 3., 4.])18. numpy.fromiter(iterable, dtype, count=-1)函数,返回一个一维数组
# 需要指定数据类型dtype iterable = (i*i for i in range(4)) arr22 = np.fromiter(iterable,dtype=float) arr22
array([ 0., 1., 4., 9.])四、其他方法
19. numpy.fromfile(file, dtype=float, count=-1, sep=’‘)函数,从文本文件或二进制文件中创建ndarrary
20. numpy.loadtxt(fname, dtype=, comments=’#’, delimiter=None, converters=None,skiprows=0, usecols=None, unpack=False, ndmin=0)从文件中创建。