博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NumPy基础操作(1)
阅读量:4701 次
发布时间:2019-06-09

本文共 2616 字,大约阅读时间需要 8 分钟。


NumPy基础操作(1)

(注:记得在文件开头导入import numpy as np

 

目录:

  • 数组的创建
  • 强制类型转换与切片
  • 布尔型索引
  • 结语

 

 


数组的创建

  • 相关函数
    np.array(), np.zeros(), np.zeros_like(), np.ones(), np.ones_like(), np.empty(), np.asarray()

     

  •  调用方法
    data1 = [1.2, 23, 24, 1.8]arr1 = np.array(data1)print(arr1)print(arr1.ndim)    #数组的维度print(arr1.shape)   #数组的形状print((arr1.dtype)) #数组元素的数据类型#输出结果out:[ 1.2 23.  24.   1.8]1(4,)float64
    data2 = [[1, 2, 3, 4], [5, 6, 7, 9]]    #如果要用array生成多维的数组必须要元素个数对称arr2 = np.array(data2)arr2_like = np.zeros_like(arr2)     #产生形状与arr2相同的全0数组arr4 = np.ones((3,2))arr7 = np.asarray(data2)        #将输入转换为一个ndarray数组print(arr2);print("************")print(arr2_like);print("************")print(arr4);print("************")print(arr7)#输出结果out:[[1 2 3 4] [5 6 7 9]]************[[0 0 0 0] [0 0 0 0]]************[[1. 1.] [1. 1.] [1. 1.]]************[[1 2 3 4] [5 6 7 9]]

 

 


强制类型转换与切片

  • 相关函数
    array.astype(), array[x:y]  #array是一个已定义的数组np.float64, np.int64, np.string_    #数组基础数据类型

     

  • 强制类型转换
    #在生成数据时就直接指定ndarray数组的类型arr8 = np.array([1,1,7], dtype=np.float64)print(arr8.dtype)print("************")#通过ndarray的方法astype更改转换数组的类型,强制类型转换arr9 = arr8.astype(np.int64)print(arr9.dtype)print("************")#Numpy的数据类型:np.object, np.string_, np.unicode_numeric_strings = np.array(['1.23', '-9.6', '42'], dtype=np.string_)print(numeric_strings.astype(float).dtype)print("************")#输出结果out:float64************int64************float64************

      

  • 数组切片
    #数组切片是原数组的视图,对切片的任何改变都会在原始数组数据上得到体现#for examplearr = np.arange(10)arr_slice = arr[5:8]arr_slice[1] = 12432print(arr)#输出结果:[    0     1     2     3     4     5 12432     7     8     9]arr_slice[:] = 187print(arr)#输出结果:[  0   1   2   3   4 187 187 187   8   9]#如果你是真的想要一份数组的复制版本,你需要明显的表达出来arr_copy = arr[:].copy()arr_copy[:] = 1print(arr)print(arr_copy)#输出结果:[  0   1   2   3   4 187 187 187   8   9]#        [1 1 1 1 1 1 1 1 1 1]#二维数组的访问arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print(arr2d[2])print(arr2d[0,2])   #这两种索引效果是相同的print(arr2d[0][2])print(arr2d[:2, 1:])   #在切片中再切片 #输出结果:[7 8 9]#        3#        3#   [[2 3]#    [5 6]]

 

 


 

布尔型索引

  • 布尔型索引
    names = np.array(['Bob','Joe', 'Will', 'Bob', 'Will', 'Joe', 'Jason'])data = np.random.randn(7,4)print(names=='Bob')print(data[names == 'Bob', 2:])     #线索出为True的行组成新的数组,再进行数组切片#输出结果#[ True False False  True False False False]#[[ 0.26361357 -0.98694019]# [ 0.34286995  0.0441788 ]]mask =(names=='Bob')|(names=='Will')        #在布尔型数组中Python关键之and 以及or无效print(mask)#输出结果#[ True False  True  True  True False False]#通过布尔性数组更改数组中的值data[data < 0] = 0      #将数组中小于0的元素的值全部改为0

     

 


 

结语

第一次写博客排版和程序都有些粗糙,望见谅。(注:相关知识点从《用Python进行数据分析》搬运至此)

 

 

转载于:https://www.cnblogs.com/morvan/p/11132786.html

你可能感兴趣的文章
android多层树形结构列表学习笔记
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>
《构建之法》第一、二、十六章阅读笔记
查看>>
arrow:让Python的日期与时间变的更好
查看>>
(转)Excel的 OleDb 连接串的格式(连接Excel 2003-2013)
查看>>
Java并发编程
查看>>
Git Stash用法
查看>>
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
memcached 细究(三)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
webservice整合spring cxf
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
String类的深入学习与理解
查看>>
不把DB放进容器的理由
查看>>
OnePage收集
查看>>
Java parseInt()方法
查看>>
yahoo的30条优化规则
查看>>