zoukankan      html  css  js  c++  java
  • numpy 学习总结

    numpy 学习总结

    作者:csj
    更新时间:01.09

    email:59888745@qq.com

    说明:因内容较多,会不断更新 xxx学习总结;

    回主目录:2017 年学习记录和总结


    #生成数组/使用astype/取值和赋值/ 数学运算 / 内置的创建数组的函数/ 文件输入输出 # Numpy是Python语言的一个library numpy # Numpy主要支持矩阵操作和运算 # Numpy非常高效,core代码由C语言写成 # pandas也是基于Numpy构建的一个library # 现在比较流行的机器学习框架(例如Tensorflow/PyTorch等等),语法都与Numpy比较接近 import numpy as np ## 数组简介和数组的构造(ndarray) ##生成数组时可以指定数据类型,如果不指定numpy会自动匹配合适的类型 # np1 = np.array([1,2,3],datetype=np.float64) #np1.datatype ##使用astype复制数组并转换数据类型 # np1 = np.array([1,2,3]) #np2=np1.astype(np.float64) ##使用astype将float转换为int时小数部分被舍弃 # np1 = np.array([1.2,2.1,3.3]) #np2_int=np1.astype(np.int) ##Array indexing/数组取值和赋值 在两个维度上分别按照[:2]和[1:3]进行切片,取需要的部分 # a =np.array([[1,2,3],[4,5,6]]) # b =a[:2,1:3] #row,clo # b ##用dtype来看numpy数组中元素的类型: #b.dtype ##数组取值和赋值 # np1 = np.array([1,2,3]) # np1 = np.array([1,2,3],datetype=np.float64) #np1.datatype # np1.shape # np1[0] # np2=np.array([[1,2,3],[4,5,6]]) # np2 # np2[0,1] ##内置的创建数组的函数 # np1 = np.zeros((3,3)) # np1 # np2 = np.ones((3,3)) # np2 # np3=np.full((3,3),0) # np3 # np4=np.eye(3,3) # 对角矩阵(对角元素为1) # np4 # np5=np.random.random((3,3)) # 3row,3 col矩阵 # np5 # np6=np.empty((2,3,3)) # 2 ge 3row,3 col矩阵 # np6 # np7=np.arange(15) #arrar 0--14 # np7 ## 数学运算 #x = np.array([[1,2,3],[4,5,6]],dtype=np.int32) #y = np.array([[1,1,1],[1,1,1]],dtype=np.int32) # z =x+y # z=np.add(x,y) #z =x-y # z=np.subtract(x,y) # z # z=x / y #np.divide(x,y) # z # z=x * y #np.multiply(x,y) # z # z=np.sqrt(x) # z # v=np.array([1,2]) # m=np.array([3,4]) # k= v.dot(m) #求向量内积np.dot(v,m) # k # v=np.array([1,2]) # m=np.array([3,4]) # k= v.dot(m) #矩阵的乘法 # k ##转置和数学公式一样,1维的vector转置还是自己 # x.T # arr = np.arange(16).reshape((2, 2, 4)) # [[[ 0 1 2 3] # [ 4 5 6 7]] # [[ 8 9 10 11] # [12 13 14 15]]] # print(arr.transpose((1,0,2))) # [[[ 0 1 2 3] # [ 8 9 10 11]] # [[ 4 5 6 7] # [12 13 14 15]]] # print(arr.swapaxes(1,2)) # [[[ 0 4] # [ 1 5] # [ 2 6] # [ 3 7]] # [[ 8 12] # [ 9 13] # [10 14] # [11 15]]] #x = np.array([[1,2],[3,4]]) #print(np.sum(x)) # 数组/矩阵中所有元素求和; prints "10" #print(np.sum(x, axis=0)) # 按行去求和; prints "[4 6]" #print(np.sum(x, axis=1)) # 按列去求和; prints "[3 7]" ## broadcasting 逐元素运算了 ##给x的每一行都逐元素加上一个向量,然后生成y ## 逻辑运算 # x_arr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) # y_arr = np.array([2.1, 2.2, 2.3, 2.4, 2.5]) # cond = np.array([True, False, True, True, False]) print(np.where(cond, x_arr, y_arr)) # is true get x col,is false get x col value ## 数组高级操作 ##numpy可以很容易地把一维数组转成二维数组,三维数组。 # arr = np.arange(8) # arr # print("(4,2):", arr.reshape((4,2))) # print("(2,2,2):", arr.reshape((2,2,2))) ## ar.ravel() #高维数组可以用ravel来拉平一维数组 ##连接两个二维数组 np.concatenate #np.concatenate([arr1, arr2], axis = 0)) # 按行连接 #np.concatenate([arr1, arr2], axis = 1)) # 按列连接 ##拆分数组 first, second, third = np.split(arr, [1,3], axis = 0) #按row 拆分 first, second, third = np.split(arr, [1,3], axis = 1) #按col 拆分 ## r_ 用于按行堆叠 相当于row append() np.r_[arr1, arr2] ## c_用于按列堆叠 相当于col append() np.c_[np.r_[arr1, arr2], arr] ## 按元素重复 arr = np.arange(3) print(arr.repeat(3)) print(arr.repeat([2,3,4])) [0 0 0 1 1 1 2 2 2] [0 0 1 1 1 2 2 2 2] ##指定axis来重复 print(arr.repeat(2, axis=0)) print(arr.repeat(2, axis=1)) ##一维数组的排序 # arr = np.random.randn(8) # arr.sort() # arr # array([-0.61817891, -0.06058585, -1.35160371, -2.18178411, 0.87576168, # -1.58531466, -0.69936331, -0.32779743]) # arr2 = np.random.random(8) # arr2 # array([ 0.12432438, 0.25883333, 0.1822138 , 0.53953672, 0.33821614, # 0.55960961, 0.6137947 , 0.93829222]) ## 文件输入输出 ##读取csv文件作为数组 #arr = np.loadtxt('array_ex.txt', delimiter=',') ##数组文件读写 #np.save('some_array', arr) #print(np.load('some_array.npy')) ## 多个数组可以一起压缩存储 #rr2 = np.arange(15).reshape(3,5) #np.savez('array_archive.npz', a=arr, b=arr2) #arch = np.load('array_archive.npz') #print(arch['a']) #print(arch['b']) ## random # a = np.random.rand(2,2) # print('a:',a) # b = np.random.random(10) # print('b:',b) # c= np.random.randn(10) # print('c:',c) # a: [[ 0.26212204 0.45755303] # [ 0.04386303 0.66983097]] # b: [ 0.42563425 0.95733217 0.72836539 0.23990547 0.10497632 0.16002414 # 0.70969603 0.62574911 0.68678163 0.24185936] # c: [-1.45631229 0.21994626 -0.69116183 -0.282174 0.7204622 0.71022805 # 0.71147763 0.30575337 1.4860439 -0.56394711] # d = np.random.rand(10,10) # e = d.max(axis=1) # f = e.sum(axis =1).reshape(10,1) ##更多的numpy细节和用法可以查看一下官网numpy指南 #http://docs.scipy.org/doc/numpy/reference/
  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/csj007523/p/8276357.html
Copyright © 2011-2022 走看看