numpy 学习总结

numpy 学习总结

作者:csj
更新时间:01.09

email:[email protected]

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

#生成数组/使用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/

原文地址:https://www.cnblogs.com/csj007523/p/8276357.html

时间: 2024-08-29 15:24:50

numpy 学习总结的相关文章

Numpy学习笔记(一)

Python本身支持的数据结构不多,除了int.float和string等一些常规的之外,还有列表.元祖.字典,都有自己的属性和方法,怎么说呢,功能已经足够强大,解决一般的问题已经足够,可当数据量增大,计算形式变得多样,这种普通的数据结构效率不高,况且python本身对于数组的支持不是很好,这也是为什么会有一批类似于numpy.scipy.panda等第三方库,大大扩展了python的功能,胶水的本质越来越突出.学习的成本也不高,不会像重新学一门语言那么困难,况且据了解,python的科学计算能

Numpy学习笔记(二)

最近一直在学HTML5和CSS3,Numpy的东西都有些生疏,那本书是已经看完了的,紧跟着相关的代码也都敲了一遍,还是发现了一些问题,因为这样的学习方式,总感觉太被动,紧紧跟着示例代码,缺少了整体观,即使你现在问我Numpy可以处理什么问题,我还是回答不出.所以,有必要回头重来一遍,再一次审视代码背后的意义,写博客真的是一个很不错的方式,毕竟,如果你不懂,写出来的文字必然也是混乱的. 那,下面记录一下Numpy学习笔记(二) Example1 文件读写:数据不应该仅仅存在内存里,应该及时保存在硬

『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)

简介: scipy包包含致力于科学计算中常见问题的各个工具箱.它的不同子模块相应于不同的应用.像插值,积分,优化,图像处理,,特殊函数等等. scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱.scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作. 在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了.作为非专业程序员,科学家总是喜欢重新发明造轮子

NumPy学习笔记 一

NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分析>第四版(华东师范大学数学系).<概率论与数理统计>(陈希孺,中科大出版).<概率论与数理统计>第二版(茆诗松.程依明等编).<组合最优化:理论与方法>(现代数学译丛23).笔记一主要记录NumPy&SciPy及相关软件的环境准备部分. NumPy的官方网站

NumPy学习笔记 三 股票价格

NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分析>第四版(华东师范大学数学系).<概率论与数理统计>(陈希孺,中科大出版).<概率论与数理统计>第二版(茆诗松.程依明等编).<组合最优化:理论与方法>(现代数学译丛23).笔记三主要操作股票价格数据. 股票价格数据通常包括开盘价.最高价.最低价和收盘价.

分享《Python数据分析基础教程:NumPy学习指南(第2版)》高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多资料分享:http://blog.51cto.com/3215120 <Python数据分析基础教程:NumPy学习指南(第2版)>高清中文PDF+高清英文PDF+源代码 高清中文版PDF,249页,带目录和书签,文字能够复制粘贴:高清英文版PDF,310页,带目录和书签,文字能够复制粘贴:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:其中高清中文版如图: 原文地址:http://

NumPy学习(让数据处理变简单)

NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同类型的元素集合. 可以使用基于零的索引访问集合中的项目. ndarray中的每个元素在内存中使用相同大小的块. ndarray中的每个元素是数据类型对象的对象(称为 dtype). 从ndarray对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示. 它从任何暴露数组接口的对

NumPy学习(索引和切片,合并,分割,copy与deep copy)

NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示例 import numpy as np #索引与切片 array=np.arange(3,15) print(array) print(array[3])#数组下标为3的元素 print('\n') print(array[1:3])#取从下标1到下标3,不包括下标3 print(array[

Numpy学习:《Python数据分析基础教程NumPy学习指南第2版》中文PDF+英文PDF+代码

NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多功能,而且业已成为Python科学计算生态系统的重要组成部分.但与这些商业产品不同,它是免费的开源软件. 推荐学习<Python数据分析基础教程NumPy学习指南第2版>,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),让工作更有成效,让代码更加简洁而高效. 学习参考: &l