ndarray——N维数组 NumPy中基本的数据结构; 所有元素是同一种类型; 别名为array; 利于节省内存和提高CPU计算时间; 有丰富的函数。ndarray数组属性 维度称为轴,轴的个数称为秩(rank)。 纵向为第0轴,横向为第1轴(axis)
基本属性 说明 ndarray.shape 维度 ndarray.ndim 秩 ndarray.size 元素总个数 ndarray.dtype 元素类型 ndarray.itemsize 元素字节大小
创建方法 说明 arange array copy empty empty_like eye fromfile fromfunction 从一个函数来创建数组 identity linspace 从起始点到终止点以及个数确定情况下创建一个等差数组 logspace mgrid ogrid ones ones_like r zeros zeros_like
# array创建ndarray
x = np.array([(1,2,3), (4,5,6)])
x
Out[48]:
array([[1, 2, 3],
[4, 5, 6]])
# arange创建ndarray
y = np.arange(1,10,0.5)
y
Out[54]:
array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. ,
7.5, 8. , 8.5, 9. , 9.5])
常用操作 说明 reshape 不改变原数组 resize 改变原数组 vstack 在垂直方向上拼接 hstack 在水平方向上拼接
切片:
x
Out[55]:
array([[1, 2, 3],
[4, 5, 6]])
print(x[:, [0,1]]) #第一维表示行,第二维表示列 >第一维不写,表示行都要
[[1 2]
[4 5]]
print(x[1, [0,1]])
[4 5]
print(x[[0,1], :])
[[1 2 3]
[4 5 6]]
对于形状不相似的数组,采用广播思想:
a = np.array([1,2,3])
b = np.array([[1,2,3], [4,5,6]])
a + b
Out[63]:
array([[2, 4, 6],
[5, 7, 9]])
ndarray的运算 axis = 0 #列 axis = 1 #行
函数 说明 sum 求和 mean 平均值 std 标准差 var 方差 min 返回最小值 max 返回最大值 argmin 返回最小值的索引 argmax 返回最大值的索引 cumsum cumprod
常用函数 说明 dot 矩阵内积 linalg.det 行列式 linalg.inv 逆矩阵 linalg.solve 多元一次方程组求根 linalg.eig 求特征值和特征向量
ndarray的ufunc(通用)函数 ufunc(universal function)是一种能对数组的每个元素进行操作的函数。NumPy内置的许多ufunc函数都是在C语言级别实现的,计算速度非常快。 在数据量比较大的时候,同一个任务尽量选用Numpy中的通用函数来处理: add, all, any, arange, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, exp, floor,…
# 计算一组数的sin(t)的二次方
import time
import math
import numpy as np
# math库函数执行时间
x = np.arange(0,100,0.01)
t_m1 = time.clock()
for i,t in enumerate(x):
x[i] = math.pow((math.sin(t)), 2)
t_m2 = time.clock()
# 通用函数执行时间
y = np.arange(0, 100, 0.01)
t_n1 = time.clock()
y = np.power(np.sin(y), 2)
y = np.arange(0,100,0.01)
t_n2 = time.clock()
print('Running time of math:', t_m2-t_m1)
print('Running time of numpy:', t_n2-t_n1)