官方参考文档链接: (https://docs.scipy.org/doc/numpy-dev/user/index.html)
Numpy:Numerical Python ,即数值Python包,是Python进行科学计算一个基础包。包括:
#导入numpy包
import numpy as np
#创建一个二维数组
narr = np.array([[1,2,3,4],[5,6,7,8]])
#查看数组的维度(打印结果2)
narr.ndim
#查看数组深度和维度打印结果(2L,4L)
narr.shape
#查看数组的数据类型,返回结果(dtype('int32'))
narr.dtype
#|代表分割,4代表保留4位。打印结果array(['aaaa','java','pyth'])
np.array(['aaaaa','java','python'],dtype='|s4')
#数组中的数据类型转换,指定为int类型,即使数组中元素为字符串也会自动转换为int。打印结果array([1,2,3])
np.array(['1','2','3'],dtype='int')
#查看数组中的元素个数,返回结果8.
narr.size
np.array([
[
[1,2,3,4],
[5,6,7,8]
],
[
[3,4,5,6],
[2,2,2,2]
]
])
print(arr.shape) #打印结果(2,2,4) shape 打印结果对应每个维度的深度值,有三个维度,分别对应2,2,4的深度值
print(arr[1,0,1]) #打印结果4
zeros函数
创建指定长度或形状的全0函数
np.zeros((3,4),np.int)
打印结果:
array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])
ones函数
创建指定长度或形状的全1数组,同上,填充值为1的数组
empty函数
创建一个没有任何具体值的数组(准确的说是一些未初始化的随机值)
range()
返回的是range object
,而np.nrange()
返回的是numpy.adarray()
range
尽可用于迭代,而np.arange
作用远不止于此,它是一个序列,可被当做向量使用。range()
不支持步长为小数,np.arange()
支持步长为小数[first, last)
或者不加严谨地写作[first:step:last)
第三个参数值代表元素个数
np.linspace(2,19,3)
运行结果:array([ 2. , 10.5, 19. ])
np.logspace(2,10,3)
输出结果:array([1.e+02, 1.e+06, 1.e+10]) #1.e是科学计数法,代表10的次方
np.arange(1,9).reshape((2,4)) #将[1,2,3,4,5,6,7,8]转为一个二个维度的数组
输出array([[1, 2, 3, 4],[5, 6, 7, 8]])
np.arange(1,9).reshape((2,2,2)) #转化成一个三个维度的数组
np.random.random((2,3,4)) #生成0-1之间的随机数组
arr = np.array([1,2,3,4])
arr.astype(‘float’) #转换数组里的数据为float类型
arr.dtype #查看数组数据类型
名称 | 描述 |
---|---|
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 位浮点数(实数部分和虚数部分) |
名称 | 描述 |
---|---|
b | 布尔型 |
i | (有符号) 整型 |
u | 无符号整型 integer |
f | 浮点型 |
c | 复数浮点型 |
m | timedelta(时间间隔) |
M | datetime(日期时间) |
O | (Python) 对象 |
S, a | (byte-)字符串 |
U | Unicode |
V | 原始数据 (void) |
在numpy中矩阵可以直接做加减乘除运算
arr1 = np.array([1,2,3,4])
arr2 = np.array([2,3,4,5])
arr1*arr2则为对位相乘
矩阵积
np.dot(a, b)
a = np.array([[1,2],[3,4],[11,12]])
b = np.array([[5,6,13],[7,8,14]])
np.dot(a,b)
输出结果:array([[ 19, 22, 41],
[ 43, 50, 95],
[139, 162, 311]])
解释:例如
[
[a1,b1,c1],
[d1,e1,f1]
]
对
[
[a2,b2],
[d2,e2],
[f2,g2]
]
做点积运算则:
[
[a1a2+b1 * d2+c1 f2,a1b2+b1e2+c1f2],
[d1a2+e1d2+f1f2 , d1b2+e1e2+f1*g2]
]
数组对象[起始位置:终止位置:位置步长]
项目 | 含义 |
---|---|
a[1:10:1] | 代表选取一维数组从1开始的下一位数,选到第10位,步长为1(注意:左开右闭,选不到1能选到10) |
a[::3] | 代表起始和结束位不指定,步长为3 |
a[2:5] | 一个:代表从第二位选到第五位 |
a[::-1] | 代表逆序输出 |
a[0] | 等价于 a[0,:,:] 同时等价于a[0,...] 如果大于三个维度不想写太多:后面的可以直接用... 代替 |
a[::3,::3,::3] | 代表第一个维度步长为3,第二个第三个维度步长为3 |
注:多个维度选择每个维度同上面的选择规则
arr = np.arange(1,10).reshape(3,3)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
1.arr[::1,::2] # ::1代表第一个维度的选择规则,::2代表第二个维度的选择规则即步长为2开始结束任意
输出:
array([[1, 3],
[4, 6],
[7, 9]])
numpy改变维度通常有三种方式:
arr.reshape(2,2,2) #转换成2 x 2 x 2的数组
arr.ravel()转化为1维数组
arr.flatten()转化为一维数组,但是数据会被复制一份
arr.shape(2,2,2) #直接改变原数据结构
#np.vstack(上,下)-->组合数组
a= np.arange(11,23).reshape(3,4)
输出:
array([[11, 12, 13, 14],
[15, 16, 17, 18],
[19, 20, 21, 22]])
b=arr+10
输出:
array([[21, 22, 23, 24],
[25, 26, 27, 28],
[29, 30, 31, 32]])
c=np.vstack((arr,arrb))
输出:
array([[11, 12, 13, 14],
[15, 16, 17, 18],
[19, 20, 21, 22],
[21, 22, 23, 24],
[25, 26, 27, 28],
[29, 30, 31, 32]])
np.concatenate((a,b),axis=0) #axis后面的值就是维度意思在哪个维度组合,0代表在0维上组合,1代表在维度为1的数组上进行组合
输出:array([[11, 12, 13, 14], axis为1的输出:array([[11, 12, 13, 14, 21, 22, 23, 24],
[15, 16, 17, 18], [15, 16, 17, 18, 25, 26, 27, 28],
[19, 20, 21, 22], [19, 20, 21, 22, 29, 30, 31, 32]])
[21, 22, 23, 24],
[25, 26, 27, 28],
[29, 30, 31, 32]])
输出结果: array([[[11, 21],
[12, 22],
[13, 23]],
[[14, 24],
[15, 25],
[16, 26]],
[[17, 27],
[18, 28],
[19, 29]]])
7.行列组合(针对一维度数组)
np.row_stack((上,下))-->组合数组
np.column_stack((左,右))-->组合数组
Numpy的常用属性
字段 | 属性 |
---|---|
shape | 维度 |
dtype | 元素类型 |
size | 元素数量 |
ndim | 维度,len(shape) |
itemsize | 元素的字节 |
nbytes | 总字节数=size * itemsize |
real | 复数数组的实部数组 |
image | 复数数组的虚部数组 |
T | 数组对象的转置视图 |
flat | 扁平迭代器 |
数组对象.tolist()->转化为python列表