当前位置: 移动技术网 > IT编程>脚本编程>Python > Python中创建ndarrary的20中方法讲解

Python中创建ndarrary的20中方法讲解

2017年12月18日  | 移动技术网IT编程  | 我要评论

喀什叶城,刘倩文,东京天气预报一周

本文介绍了基础的、常用的创建ndarrary的多种方法,附带示例代码。 一、通过ndarray创建
import numpy as np
1.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)从文件中创建。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网