Python数据分析:NumPy

Python数据分析:NumPy,第1张

文章目录
  • Python科学计算库NumPy(一):NumPy的ndarray对象及其属性
    • NumPy的ndarray对象
      • (1)创建ndarray对象
      • (2)Numpy数组属性:ndarray对象属性
        • ndarray.shape返回值的理解
        • ndarray.itemsize和ndarray.size的理解

Python科学计算库NumPy(一):NumPy的ndarray对象及其属性
  1. Numpy(Numerical Python)是Python语言的一个第三方库。
  2. Numpy是一个运行速度非常快的数学库。
  3. 支持大量的维度数组与矩阵运算。NumPy提供多维数组对象,以及用于数组快速 *** 作的各种API,有包括数学、逻辑、形状 *** 作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
  4. 此外也针对数组运算提供了大量的数学函数库。

推荐学习链接:
NumPy官网:https://numpy.org/
Numpy中文网:https://www.numpy.org.cn/
菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html

NumPy的ndarray对象
  • NumPy的核心是其N维数组对象:ndarray对象。ndarray是一系列同类型数据的集合,集合中元素的索引以0下标为开始。
  • ndarray对象是用于存放同类型元素的多维数组。
  • ndarray 中的每个元素在内存中都有相同存储大小的区域。
(1)创建ndarray对象
  • 创建一个ndarray对象只需调用Numpy的array函数即可:

    numpy.array(object[, dtype = None, copy = True, order = None, subok = False, ndmin = 0])
    '''参数说明:
    	object:数组或嵌套的数列
    	dtype:数组元素的数据类型,可选
    	copy:对象是否需要复制,可选
    	order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
    	subok:默认返回一个与基类类型一致的数组
    	ndmin:指定生成数组的最小维度
        '''
    

    注意:处理矩阵数据时,不要写list结构。应该吧所有的数据 *** 作转化为Numpy底层,即ndarray结构

    • array:即数组,是numpy的最底层结构
  • 代码演示

    调用Numpy的array函数创建一个ndarray对象

    注意:进行数组计算时,一定要确保数组的shape值是相同的。

    import numpy as np
    array = np.array([1,2,3,4,5]) # 创建一个数组(ndarray对象)
    print(array)
    print(type(array))
    '''输出结果:
    [1 2 3 4 5]
    
    ''' 
    array1 = array + 1
    array2 = array + array1
    array3 = array * array1
    print('array:%s'% array)
    print('array1:%s'% array1)
    print('array2:%s'% array2)
    print('array3:%s'% array3)
    '''输出结果:
    array:[1 2 3 4 5]
    array1:[2 3 4 5 6]
    array2:[ 3  5  7  9 11]
    array3:[ 2  6 12 20 30]
    '''
    # array的索引
    print(array[0])
    print(array[3])
    '''输出结果:
    1
    4
    '''
    
  • ndarray结构中,所有元素必须是同一类型,如果不是,则自动向下转换

  • import numpy as np
    list_test1 = [1,2,3,4,5]
    array_test1 = np.array(list_test1)
    '''array_test1:
    array([1, 2, 3, 4, 5])
    '''
    
    # float类型举例
    list_test2 = [1,2,3,4,5.1]
    array_test2 = np.array(list_test2)
    '''array_test2:
    array([1. , 2. , 3. , 4. , 5.1])
    '''
    
    # 字符串类型举例
    list_test3 = [1,2,3,4,'5']
    array_test3 = np.array(list_test3)
    '''array_test3:
    array(['1', '2', '3', '4', '5'], dtype='
    
(2)Numpy数组属性:ndarray对象属性
  • ​ Numpy数组的维数为轶(rank),轶就是轴的数量,一维数组的轶为1,二维数组的轶为2,以此类推。

  • ​ Numpy的数组中比较重要的ndarray对象属性有:

属性说明
ndarray.ndim返回数组的维数,等于轶
ndarray.shape数组的维数,返回一个元组。对于一个n行m列的矩阵,值为(n,m)。如果是三维数组,则返回的元组包含3个元素。
ndarray.reshape(n,m)reshape函数用于调整数组的大小,其参数n、m分别表示数组的行和列
ndarray.size数组元素的个数,相当于ndarray.shape中n*m的值
ndarray.dtypendarray对象的元素类型
ndarray.itemise返回ndarray对象中每个元素的大小,以字节为单位(int8为1个字节,float64为8个字节:float64占用64bits,每个字节长度为8,64/8=8,占用8个字节。一个元素类型为complex32的数组item属性为4)
ndarray.flagsndarray对象的内存信息
ndarray.realndarray元素的实部
ndarray.imagndarray元素的虚部
ndarray.data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
  • 代码演示:
# 处理矩阵数据时,不要写list结构
list1 = [1,2,3,4,5]
print(list1.shape)  # 会报错:'list' object has no attribute 'shape'

import numpy as np
array = np.array([1,2,3,4,5])
print(type(array))
print(array.shape)
'''输出结果:

(5,)
'''
array1 = np.array([[1,2,3],[4,5,6]])
print(array1)
print(array1.shape)
'''输出结果:
[[1 2 3]
 [4 5 6]]
(2, 3)
'''
ndarray.shape返回值的理解
  • 数组为三维时,ndarray.shape的返回值:
import numpy as np
array1 = np.array([[[1,2,3],[4,5,6]],[[2,3,4],[5,6,7]]])
array2 = np.array([[[1,2]],[[3,4]],[[5,6]]])
print(array1)
print(array1.shape)
print(array2)
print(array2.shape)
'''输出结果:
[[[1 2 3]
  [4 5 6]]
  
 [[2 3 4]
  [5 6 7]]]
(2, 2, 3)

[[[1 2]]

 [[3 4]]
 
 [[5 6]]]
(3, 1, 2)
'''

数组为三维时,ndarray.shape输出的(a,b,c)可以形象地理解为:这个数组共a页,每一页都有一个b行c列的二维数组,也就是a个b*c的二维数组构成了这个(a,b,c)的三维数组。(a,b,c)中a表示包含的二维数组的个数,(b,c)表示二维数组的形状,即b行c列。

ndarray.itemsize和ndarray.size的理解
  • ndarray.itemsize和ndarray.size代码演示
import numpy as np
array1 = np.array([1,2,3,4,5])
print(array1.dtype)
print(array1.itemsize)
'''输出结果:
int32
4
'''
array2 = np.array([[1,2,3],[4,5,6]])
array3 = np.array([[[1,2,3],[4,5,6]],[[2,3,4],[5,6,7]]])
print(array1)
print(array1.shape)
print(array1.size)

print(array2)
print(array2.shape)
print(array2.size)

print(array3)
print(array3.shape)
print(array3.size)
'''输出结果:
[1 2 3 4 5]
(5,)
5

[[1 2 3]
 [4 5 6]]
(2, 3)
6

[[[1 2 3]
  [4 5 6]]

 [[2 3 4]
  [5 6 7]]]
(2, 2, 3)
12
'''
  • 总结:ndarray.itemsize以字节的形式返回数组中每一个元素的大小(ndarray 中的每个元素在内存中都有相同存储大小的区域。)
    • 一个元素类型为float64的数组,其itemsize属性值为6(float64 占用 64 个 bits,每个字节长度为 8bits,所以 64/8,占用 8 个字节)
    • 一个元素类型为 complex32 的数组,其 itemsize 属性为 4
    • 一个元素类型为int32的数组,其 itemsize 属性为 4
  • ndarray.size主要用来统计数组元素的个数,其值等于ndarray.shape返回的元组中元素的乘积。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/717993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存