numpy

NumPy 数据类型

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型。

bool_ 布尔型数据类型(True 或者 False)
int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc 与 C 的 int 类型一样,一般是 int32 或 int 64
intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8 字节(-128 to 127)
int16 整数(-32768 to 32767)
int32 整数(-2147483648 to 2147483647)
int64 整数(-9223372036854775808 to 9223372036854775807)
uint8 无符号整数(0 to 255)
uint16 无符号整数(0 to 65535)
uint32 无符号整数(0 to 4294967295)
uint64 无符号整数(0 to 18446744073709551615)
float_ float64 类型的简写
float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_ complex128 类型的简写,即 128 位复数
complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)
numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32, np.float32,等等。

NumPy arrays:

1.ndarray  n N维数组对象
2.【元素数据类型必须相同】

创建一维数组:
1.数据类型转化
2.内置函数

创建二维数组:
1.数据类型转化
2.内置函数

数组属性:
1.修改 sharp
2.转换数据类型:
1.nparr =》 python
2.nparr元素 int =》 float

数组切片:

切片:取值

一维数组:

二维数组:

根据条件进行取值

ifnull(condition,xx,xxx)

5.数组的轴 (axis)
1.numpy 轴 可以理解为方向
2.数组 0 1 2 表示
eg :
一维数组:只有一个 0 轴
二维数组:0轴 1轴
三维数组:0轴 1轴 2轴

3.轴 用于计算:
    按照 0、1、2轴进行计算

np.xxx() api

np.sum
np.mean

6.数组的计算

跟矩阵一样:
1.数组与数的计算
2.形状相同的数组计算
3.不同形状的数组 计算?
4.行数 或 列数相同的 一维数组 与 多维数组 进行计算
NumPy 切片和索引
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

实例

import numpy as np

a = np.arange(10)
s = slice(2,7,2) # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])
1
2
3
4
5
输出结果为:

[2 4 6]
1
以上实例中,我们首先通过 arange() 函数创建 ndarray 对象。 然后,分别设置起始,终止和步长的参数为 2,7 和 2。

我们也可以通过冒号分隔切片参数 start:stop:step 来进行切片操作:

实例

import numpy as np

a = np.arange(10)
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)
1
2
3
4
5
输出结果为:

[2 4 6]
1
冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。

实例

import numpy as np

a = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
b = a[5]
print(b)
1
2
3
4
5
输出结果为:

5
1
实例

import numpy as np

a = np.arange(10)
print(a[2:])
1
2
3
4
输出结果为:

[2 3 4 5 6 7 8 9]
1
实例

import numpy as np

a = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
print(a[2:5])
1
2
3
4
输出结果为:

[2 3 4]
1
多维数组同样适用上述索引提取方法:

实例

import numpy as np

a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)

从某个索引处开始切割

print(‘从数组索引 a[1:] 处开始切割’)
print(a[1:])
1
2
3
4
5
6
7
输出结果为:

[[1 2 3]
[3 4 5]
[4 5 6]]
1
2
3
从数组索引 a[1:] 处开始切割

[[3 4 5]
[4 5 6]]
1
2
切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。

实例

import numpy as np

a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print (a[…,1]) # 第2列元素
print (a[1,…]) # 第2行元素
print (a[…,1:]) # 第2列及剩下的所有元素
1
2
3
4
5
6
输出结果为:

[2 4 5]
[3 4 5]
[[2 3]
[4 5]
[5 6]]
1
2
3
4
5
NumPy 高级索引
整数数组索引
布尔索引
花式索引
NumPy 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。

如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。

import numpy as np

a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print ©
1
2
3
4
5
6
输出结果为:

[ 10 40 90 160]
1
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:

import numpy as np

a = np.array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([1,2,3])
print(a + b)
1
2
3
4
5
6
7
8
输出结果为:

[[ 1 2 3]
[11 12 13]
[21 22 23]
[31 32 33]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值