Numpy-part1

numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于在大型、多维数组上执行数值运算。
创建数组:

import numpy as np
a = np.array([1,2,3,4,5])
b = np.array(range(1,6))
c = np.arange(1,6)
print(a,b,c)
[1 2 3 4 5] [1 2 3 4 5] [1 2 3 4 5]

上面a,b,c内容相同,注意arange和range的区别
np.arange的用法:arange([start,] stop[, step,],dtype=None)
数组的类名

import numpy as np
a = np.array([1,2,3,4,5])
type(a)
numpy.ndarray

数据的类型

print(a.dtype)
int32

数据类型的操作

指定创建数组的数据类型:
a = np.array([1,0,1,0],dtype=np.bool)
print(a)
[ True False True False]
修改数组的数据类型:

print(a.astype("i1"))
print(a.astype(np.int8))

修改浮点型的小数位数:

b = p.array([0.0485436,0.26320629,0.69646413,0.71811003])
print(np.round(b,2))

数组的形状

import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
print(a)
#查看数组的形状:
print(a.shape)
#修改数组的形状:
print(a.reshape(3,4))

把数组转化为1维度数据

import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
print(a)
#查看数组的形状:
print(a.shape)
#修改数组的形状:
print(a.reshape(3,4))
print("*"*100)
b = a.reshape(3,4)
print(b)

print(b.reshape(1,12))
print(b.flatten())

数组和数的计算

加法减法

import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
#加法减法
print(a+1)
[[ 4  5  6  7  8  9]
 [ 5  6  7  8  9 10]]

乘法除法

import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
#乘法除法
print(a*3)
[[ 9 12 15 18 21 24]
 [12 15 18 21 24 27]]

Numpy的广播机制,在运算过程中,加减乘除的值被广播到所有的元素上面。

数组和数组的计算

数组和数组的加减法

import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
b = np.array([[21,22,23,24,25,26],[27,28,29,30,31,32]])
#数组和数组的加减法
print(a+b)
[[24 26 28 30 32 34]
 [31 33 35 37 39 41]]

数组和数组的乘除法

import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
b = np.array([[21,22,23,24,25,26],[27,28,29,30,31,32]])
#数组和数组的乘法
print(a*b)
[[ 63  88 115 144 175 208]
 [108 140 174 210 248 288]]

不同维度数组计算

import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
b = np.array([[21,22,23,24,25,26],[27,28,29,30,31,32]])
c = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
#不同维度的数组计算
print(a*c)
ValueError: operands could not be broadcast together with shapes (2,6) (3,4) 
import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
b = np.array([[21,22,23,24,25,26],[27,28,29,30,31,32]])
c = np.array([[1,2,3,4,5,6]])
#不同维度的数组计算
print(a*c)
print(a-c)
[[ 3  8 15 24 35 48]
 [ 4 10 18 28 40 54]]
[[2 2 2 2 2 2]
 [3 3 3 3 3 3]]
import numpy as np
a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])

c = np.array([[1],[2]])
#不同维度的数组计算
print(c+a)
print(c*a)
print(a*c)
[[ 4  5  6  7  8  9]
 [ 6  7  8  9 10 11]]
[[ 3  4  5  6  7  8]
 [ 8 10 12 14 16 18]]
[[ 3  4  5  6  7  8]
 [ 8 10 12 14 16 18]]

广播原则

如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。

Numpy读取数据

np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)


image.png

CSV: Comma-Separated Value,逗号分隔值文件
np.loadtxt(US_video_data_numbers_path,delimiter=",",dtype=int,unpack=1)
注意其中添加delimiter和dtype以及unpack的效果
delimiter:指定边界符号是什么,不指定会导致每行数据为一个整体的字符串而报错
dtype:默认情况下对于较大的数据会将其变为科学计数的方式
unpack:默认是False(0),默认情况下,有多少条数据,就会有多少行。为True(1)的情况下,每一列的数据会组成一行,原始数据有多少列,加载出来的数据就会有多少行,相当于转置的效果。
转置是一种变换,对于numpy中的数组来说,就是在对角线方向交换数据,目的也是为了更方便的去处理数据。

import numpy as np
t = np.array([[0,1,2,3,4,5],[6,7,8,9,10,11],[12,13,14,15,16,17]])
print(t.transpose())
print(t.swapaxes(1,0))
print(t.T)
[[ 0  6 12]
 [ 1  7 13]
 [ 2  8 14]
 [ 3  9 15]
 [ 4 10 16]
 [ 5 11 17]]
[[ 0  6 12]
 [ 1  7 13]
 [ 2  8 14]
 [ 3  9 15]
 [ 4 10 16]
 [ 5 11 17]]
[[ 0  6 12]
 [ 1  7 13]
 [ 2  8 14]
 [ 3  9 15]
 [ 4 10 16]
 [ 5 11 17]]

以上的三种方法都可以实现二维数组的转置的效果。

numpy索引和切片

取行一般冒号在后面或者后面冒号省略;取列一般冒号在前或者前面冒号省略。

import numpy as np
a = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
#取一行
print(a[1])
#取一列
print(a[:,2])
#取多行
print(a[1:3])
#取多列
print(a[:,2:4])
#取特定的行
print(a[[1,3],:])
#取特定的列
print(a[:,[2,4]])

numpy中数值的修改

import numpy as np
t = np.array([[0,1,2,3,4,5],[6,7,8,9,10,11],[12,13,14,15,16,17],[18,19,20,21,22,23]])
t[:,2:4] = 0
print(t)
[[ 0  1  0  0  4  5]
 [ 6  7  0  0 10 11]
 [12 13  0  0 16 17]
 [18 19  0  0 22 23]]

把t中小于10的数字替换为0

import numpy as np
t = np.arange(24).reshape((4,6))
t[t<10] = 0

print(t)

numpy中三元运算符

把t中小于10的数字替换为0,把大于10的替换为10

import numpy as np
t = np.arange(24).reshape((4,6))
x = np.where(t<10,0,10) #numpy的三元运算符
print(x)

把t中小于10的数字替换为0,把大于20的替换为20:

import numpy as np
t = np.arange(24).reshape((4,6))
x = t.clip(10,20)
print(x)

nan表示not a number表示不是一个数字
什么时候numpy中会出现nan:当我们读取本地的文件为float的时候,如果有缺失,就会出现nan当做了一个不合适的计算的时候(比如无穷大(inf)减去无穷大)。
inf表示正无穷大,-inf表示负无穷大。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容

  • 自学整理记录,大神见笑 为什么学习numpy 快速 方便 科学计算的基础库 什么是numpy 一个在Python中...
    岑洋阅读 2,626评论 0 0
  • 什么是numpy ​ 一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库...
    MacsenChu阅读 1,004评论 0 0
  • 1. 什么是numpy numpy是一个在python中做科学计算的基础库,重在数值计算,也是大部分python科...
    Daily_Note阅读 709评论 0 0
  • numpy创建数组(矩阵)1.从Python中的列表、元组等类型创建ndarray数组In [1]: import...
    陨星落云阅读 4,459评论 9 31
  • 摘要什么是numpynumpy基础numpy常用方法numpy常用统计方法为什么要学习numpy:1. 快速;2....
    Hayley笔记阅读 537评论 0 1