NumPy基础ndarray

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Co_zy/article/details/85990478

本文内容源自《利用Python进行数据分析》一书

一.NumPy的ndarray

NumPy最重要的一个特点就是其N维数组对象(即ndarray) ,它是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的.每个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象)
首先创建ndarray

>>> import numpy as np
>>> data = [[1,2,3,4],[5,6,7,8]];
>>> arr = np.array(data);
>>> arr
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

然后输出shapedtype ,注意arr.shape();是错误的.

>>> arr.shape;
(2, 4)
>>> arr.dtype;
dtype('int32')

二.创建ndarray

创建数组最简单的办法就是使用array函数,它接收一切序列型的对象(创建其它数组),然后产生一个新的含有传入数据的NumPy数组.
示例1

>>> data = [1,2,3,4]
>>> arr = np.array(data)
>>> arr
array([1, 2, 3, 4])

示例2 如上面展示的嵌套序列(由一组等长列表组成的列表)

>>> data = [[1,2,3,4],[5,6,7,8]];
>>> arr = np.array(data);
>>> arr
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

示例3 zeros创建指定长度或形状全为0数组
ones创建指定长度或形状全为1的数组

>>> np.zeros(10)
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

>>> np.zeros((3,6))
array([[ 0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.]])
       
>>> np.ones((2,3,2))
array([[[ 1.,  1.],
        [ 1.,  1.],
        [ 1.,  1.]],

       [[ 1.,  1.],
        [ 1.,  1.],
        [ 1.,  1.]]])

示例4
arange是Python内置函数range的数组版:

>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

reshape 可以重新定义其形状

>>> mat = np.arange(12).reshape((3,4))
>>> mat
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

示例5 np.sort()逐行由大到小排序

>>> arr
array([[14, 13, 12, 11],
       [10,  9,  8,  7],
       [ 6,  5,  4,  3]])
>>> np.sort(arr)
array([[11, 12, 13, 14],
       [ 7,  8,  9, 10],
       [ 3,  4,  5,  6]])

三.ndarray的数据类型

dtype是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需信息,创建ndarray时可以指定数据类型

>>> arr = np.array([1,2,4],dtype=np.int32)
>>> arr.dtype
dtype('int32')
>>> arr
array([1, 2, 4])
  • 数据类型转换

1.可以通过ndarray的astype方法显式地转换为其dtype

>>> arr = np.array([1,2,3,4,5])
>>> arr.dtype
dtype('int32')
>>> float_arr = arr.astype(np.float64)
>>> float_arr
array([ 1.,  2.,  3.,  4.,  5.])
>>> float_arr.dtype
dtype('float64')

2.如果将浮点数转换成整数,则小数部分将会被截断

>>> arr = np.array([3.7,2.5,2.6])
>>> arr
array([ 3.7,  2.5,  2.6])

>>> arr.astype(np.int32)
array([3, 2, 2])

四.数组和标量之间的运算[];

数组与标量的算术运算也会将那个标量值传播到各个元素
数乘

>>> arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> arr*2
array([[ 0,  2,  4,  6],
       [ 8, 10, 12, 14],
       [16, 18, 20, 22]])

相减

>>> arr1 - arr 
array([[12, 12, 12, 12],
       [12, 12, 12, 12],
       [12, 12, 12, 12]])

相乘

>>> arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> arr1
array([[12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23]])
>>> arr * arr1
array([[  0,  13,  28,  45],
       [ 64,  85, 108, 133],
       [160, 189, 220, 253]])

元素乘法:np.multiply(a,b)
矩阵乘法:np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b)
唯独注意:*,在 np.array 中重载为元素乘法,在 np.matrix 中重载为矩阵乘法!

猜你喜欢

转载自blog.csdn.net/Co_zy/article/details/85990478