python-Numpy数据分析(一)

举报
brucexiaogui 发表于 2021/12/30 01:32:46 2021/12/30
【摘要】 python-Numpy数据分析(一)   使用numpy创建数据 import numpy as np print('将普通的一维列表生成Numpy一维数组')data = [1,23,45,5,4]arr = np.array(data)print(arr)print('打印数组元素类型')print(arr.dty...

python-Numpy数据分析(一)

 

使用numpy创建数据


  
  1. import numpy as np
  2. print('将普通的一维列表生成Numpy一维数组')
  3. data = [1,23,45,5,4]
  4. arr = np.array(data)
  5. print(arr)
  6. print('打印数组元素类型')
  7. print(arr.dtype)
  8. print('将普通的二维列表生成Numpy二维数组')
  9. data = [[1,23,45,5,4],[3,5,6,7,8]]
  10. arr = np.array(data)
  11. print(arr)
  12. print('打印数组维度')
  13. print(arr.shape)
  14. print('使用zeros/empty')
  15. print('生成包含10个0的一维数组')
  16. print(np.zeros(10))#生成包含10个0的一维数组
  17. print('生成2*3的二维数组')
  18. print(np.zeros((2,3)))#生成2*3的二维数组
  19. print('生成3*2*4的三维数组,所有元素未初始化')
  20. print(np.empty(3*2*4))#生成3*2*4的三维数组,所有元素未初始化
  21. print('使用arange生成连续元素')
  22. print(np.arange(15))


 

NumPy的ndarray NumPy数据类型


  
  1. import numpy as np
  2. print('生成数组时指定数据类型')
  3. arr = np.array([1,2,43,545],dtype=np.float64)
  4. print(arr.dtype)
  5. print('使用astype复制数组并转换数据类型')
  6. int_arr = np.array([1,23,454,56,54])
  7. float_arr = int_arr.astype(np.float)
  8. print(float_arr.dtype)
  9. print('使用astype将float转换为int时小数部分舍掉')
  10. float_arr2 = np.array([1.34,2.54,4.23432,5.45454,6.54,7.5])
  11. int_arr2 = float_arr2.astype(np.int)
  12. print(int_arr2)
  13. print('使用astype把字符串转换为数组,如果失败抛出异常')
  14. str_arr = np.array([1.2323,4.54545,6.34],dtype = np.string_)
  15. float_arr3 = str_arr.astype(dtype = np.float)
  16. print(float_arr3)
  17. print('astype使用其他数组的数据类型作为参数')
  18. int_arr3 = np.arange(10)
  19. float_arr4 = np.array([2.34,4.34],dtype=np.float64)
  20. print(int_arr3.astype(float_arr4.dtype))
  21. print(int_arr3[0],int_arr3[1])

 

NumPy的ndarray 数组和标量之间的运算

 


  
  1. import numpy as np
  2. '''
  3. NumPy的ndarray 数组和标量之间的运算
  4. • 不用编写循环即可对数据执行批量运算
  5. • 大小相等的数组之间的任何算术运算都会将运算应用到元素级
  6. • 数组与标量的算术运算也会将那个标量值传播到各个元素
  7. '''
  8. #数组乘法/减法,对应元素相乘/相减
  9. arr = np.array([[1,2,3,4,5],[1,2,3,4,5]])
  10. print(arr*arr)
  11. print(arr-arr)
  12. #标量操作作用在数组的每个元素上
  13. arr = np.array([[1,2,3,4],[1,2,3,4]])
  14. print(1/arr)
  15. print(arr ** 0.5)

 

NumPy的ndarray 基本的索引和切片

 


  
  1. import numpy as np
  2. #通过索引访问二维数组某一行或某个元素
  3. arr = np.array([[1,2,3,45],[6,7,8,9]])
  4. print(arr[0]) #访问第一行数组元素
  5. print(arr[0][1])# 访问第一行数组的第二个元素
  6. print(arr[0,1]) # numpy访问方式,普通python不可以使用。访问第一行数组的第二个元素
  7. #使用切片访问和操作
  8. arr = np.array([1,2,3,4,5,6,7,8,9])
  9. print(arr[1:6]) # 打印元素arr[1]到arr[5]
  10. arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
  11. print(arr2[:2]) #打印第1、2行
  12. print(arr2[:2,1])#打印第1、2行的第2列
  13. print(arr2[:,:1])#打印第一行第一列的所有元素
  14. arr2[:2,1:]=0 #将第1、2行的第2、3列设置为0
  15. print(arr2)

NumPy的ndarray 布尔型索引


  
  1. '''
  2. NumPy的ndarray 布尔型索引
  3. • 布尔型数组的长度必须跟被索引的轴长度一致。
  4. • 可以将布尔型数组跟切片、整数(或整数序列)混合使用
  5. '''
  6. import numpy as np
  7. import numpy.random as np_random
  8. print('使用boolean数组作为索引')
  9. name_arr = np.array(['Bob','libai','dufu','wangzijian','zhanguo','huanming','tangguowei'])
  10. ran_arr = np.random.randn(7,4) # 随机7*4数组
  11. print(ran_arr)
  12. print(name_arr == 'Bob') # 返回布尔数组,元素等于'Bob'为True,否则False。
  13. print(ran_arr[name_arr == 'Bob']) # 利用布尔数组选择行

 

NumPy的ndarray 花式索引

 


  
  1. '''
  2. NumPy的ndarray 花式索引
  3. • 花式索引(Fancy indexing)是一个NumPy术语,它指的是利用整数数组进
  4. 行索引。
  5. • 一次传入多个索引数组会有一点特别。它返回的是一个一维数组,其中的元素
  6. 对应各个索引元组。
  7. '''
  8. import numpy as np
  9. print('使用整数数组作为索引')
  10. arr = np.empty((8,4))
  11. for i in range(8):
  12. arr[i] = i
  13. print(arr)
  14. print(arr[[4,3,2,6]])# 打印arr[4]、arr[3]、arr[2]和arr[6]。
  15. print(arr[[-3,-5,-7]]) # 打印arr[-3]、arr[-5]和arr[-7]行,就是打印倒数第3、5、7行
  16. arr2 = np.arange(32).reshape(8,4) # 通过reshape变换成二维数组
  17. print('arr2数组\n',arr2)
  18. print('打印arr2[1, 0]、arr[5, 3],arr[7, 1]和arr[2, 2]')
  19. print(arr2[[1,5,7,2],[0,3,1,2]]) #[ 4 23 29 10]
  20. print('arr2分别打印1、5、7、2行每行的0、3、1、2列的数据')
  21. print(arr2[[1,5,7,2]][:,[0,3,1,2]])
  22. print('使用np.ix_()方法输出上面的效果')
  23. print(arr2[np.ix_([1,5,7,2],[0,3,1,2])])


 

NumPy的ndarray 数组转置和轴对换


  
  1. import numpy as np
  2. import numpy.random as np_random
  3. print('转置矩阵')
  4. arr = np.arange(15).reshape((3,5)) #自动生成3行5列数组
  5. print(arr)
  6. print(arr.T) #arr.T 改属性可以将矩阵的行和列对调,使得行变为列,列变为行
  7. print('转置矩阵做点乘积')
  8. arr2 = np.arange(15).reshape((3,5))
  9. print(np.dot(arr.T,arr2)) #利用np.dot计算矩阵内积XTX
  10. print('高维矩阵转换')
  11. arr3 = np.arange(16).reshape((2,2,4))
  12. print(arr3)
  13. '''
  14. 详细解释:
  15. arr数组的内容为
  16. - a[0][0] = [0, 1, 2, 3]
  17. - a[0][1] = [4, 5, 6, 7]
  18. - a[1][0] = [8, 9, 10, 11]
  19. - a[1][1] = [12, 13, 14, 15]
  20. transpose的参数为坐标,正常顺序为(0, 1, 2, ... , n - 1),
  21. 现在传入的为(1, 0, 2)代表a[x][y][z] = a[y][x][z],第0个和第1个坐标互换。
  22. - a'[0][0] = a[0][0] = [0, 1, 2, 3]
  23. - a'[0][1] = a[1][0] = [8, 9, 10, 11]
  24. - a'[1][0] = a[0][1] = [4, 5, 6, 7]
  25. - a'[1][1] = a[1][1] = [12, 13, 14, 15]
  26. '''
  27. print('arr3高维矩阵转换')
  28. print(arr3.transpose((1, 0, 2)))
  29. print('直接交换第1和第2个坐标')
  30. print(arr3.swapaxes(1, 2)) # 直接将第1和第2个轴坐标对换

 

NumPy的ndarray 快速的元素级数组函数

 


  
  1. '''
  2. NumPy的ndarray 快速的元素级数组函数
  3. • 一元函数 I
  4. 类型 说明
  5. abs, fabs 计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs。
  6. sqrt 计算各元素的平方根。相当于arr ** 0.5
  7. sqare 计算各元素的平方。相当于arr ** 2
  8. exp 计算各元素的e^x
  9. log, log10, log2, log1p 分别为自然对数、底数为10的log、底数为2的log和log(1 + x)。
  10. sign 计算各元素的正负号:1(正数)、0(零)、-1(负数)。
  11. ceil 计算各元素的ceiling值,即大于等于该值的最小整数。
  12. floor 计算各元素的floor值,即小于等于该值的最小整数。
  13. NumPy的ndarray 快速的元素级数组函数
  14. • 一元函数 II
  15. 类型 说明
  16. rint 将各元素值四舍五入到最接近的整数,保留dtype。
  17. modf 将数组的小数部分与整数部分以两个独立数组的形式返还。
  18. isnan 返回一个表示“哪些值是NaN(这不是一个数字)”的布尔型数组
  19. isfinite, isinf 分别返回一个表示“哪些元素是有限的(非inf,非NaN)”或“哪些元素是
  20. 无穷的”的布尔型数组
  21. cos, cosh, sin, sinh, tan, tanh 普通型或双曲型三角函数
  22. arccos, arccosh, arcsin, arcsinh,arctan, arctanh 反三角函数
  23. logical_not 计算各元素not x的真值。相当于-arr。
  24. NumPy的ndarray 快速的元素级数组函数
  25. • 二元函数 I
  26. 类型 说明
  27. add 将数组中对应的元素相加
  28. subtract 从第一个数组中减去第二个数组中的元素
  29. multiply 数组元素相乘
  30. divide, floor_divide 除法或向下取整除法
  31. power 对第一个数组中的元素A和第二个数组中对应位置的元素B,计算A^B。
  32. maximum, fmax 元素级的最大值计算。fmax将忽略NaN。
  33. minimum, fmin 元素级的最小值计算。fmin将忽略NaN。
  34. mod 元素级的求模计算
  35. NumPy的ndarray 快速的元素级数组函数
  36. • 二元函数 II
  37. 类型 说明
  38. copysign 将第二个数组中的符号复制给第一个数组中的值
  39. greater, greater_equal, less,less_equal,equal, not_equal 执行元素级的比较,最终产生布尔型数组。
  40. logical_and, logical_or,logical_xor 执行元素级的真值逻辑运算,最终产生布尔型数组
  41. '''
  42. import numpy as np
  43. import numpy.random as np_random
  44. print('求平方根')
  45. arr = np.arange(10)
  46. print(arr)
  47. print(np.sqrt(arr))
  48. print('数组比较')
  49. x = np_random.randn(8)
  50. y = np_random.randn(8)
  51. print(x)
  52. print(y)
  53. print(np.maximum(x,y))
  54. print('使用modf函数把浮点数分解成整数和小数部分')
  55. arr = np_random.randn(7)*5
  56. print(np.modf(arr))

 

 

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/80666622

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。