1. 创建ndarray
import numpy as np
data1=[2,1,3,2,5,6,2.4]
arr1 = np.array(data1)
data2=[[2,1,3,2,5,6,2.4],[2,1,3,2,5,6,2.4]]
arr2 = np.array(data2)
range_arr = np.arange(10)
zeros_arr = np.zeros((3,5))
ones_arr = np.ones((5,3))
empty_arr = np.empty((2,4,2))
eye_arr = np.eye(4)
2.ndarray数据类型
arr.shape
arr.dtype
显式转换dtype: float_arr = arr.astype(np.float64)
其中浮点数转换为整数是截断式
3.索引和切片
注意:数组切片是原始数组的视图,视图上任何修改都会直接修改源数组,如果需要的是数据的副本,,那么需要显示的进行复制操作:例如 arr[3,5].copy()。
索引 arr2d[1][1] 和 arr2d[1,1] 是等价的
切片 arr2d[:2,1:] 二维数组的前两行(除第一列)的后几列
布尔型索引 、花式索引(复制到新数组)
4. np.where(x,a,b)
相当于三元表达式 a if x else b
x,a,b 可以是等长度的数组
可以多层嵌套使用
np.where(cond1&cond2,0,
np.where(cond1,1,
np.where(cond2,2,3)))
5.统计函数
方法 | 描述 |
---|---|
sum | 对数组中的全部或某轴向的元素求和 |
mean | 算数平均值 |
std | 标准差 |
var | 方差 |
min | 最小值 |
max | 最大值 |
argmin | 最小值的索引 |
argmax | 最大值的索引 |
cumsum | 所有元素的累计和 |
cumprod | 所有元素的累计积 |
6.排序
排序
>>> arr=np.random.randn(8)
>>> arr
array([-0.24714293, 0.16531488, 0.70580089, -1.06400186, 0.81947489,
0.31703525, 1.26607519, -0.13315898])
>>> arr.sort()
>>> arr
array([-1.06400186, -0.24714293, -0.13315898, 0.16531488, 0.31703525,
0.70580089, 0.81947489, 1.26607519])
>>>
对于多维数组,sort(a) a代表的是轴向,如下图所示,对于一个二维数组,0代表列项排序,1代表行项排序7.逻辑函数
布尔型数组的方法
>>> import numpy as np
>>> boools=np.array([False,True,True])
>>> boools.any()
True
>>> boools.all()
False
>>>
方法 | 说明 |
---|---|
unique(x) | 计算x中的唯一元素,并返回有序结果 |
intersect1d(x,y) | 计算x和y中的公共元素,并返回有序结果 |
union1d(x,y) | 计算x和y的并集,并返回有序结果 |
in1d(x,y) | 得到一个表示“x的元素是否包含于y”的布尔数组 |
setdiff1d(x,y) | 集合的差,x-y |
setor1d(x,y) | 集合的对称差,即x∪y - x∩y |
8.存取
>>> import numpy as np
>>> arr = np.arange(8)
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> np.save('myarr',arr)
>>> np.load('myarr.npy')
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> np.savez('myarrzip.npz',a=arr,b=arr)
>>> myzip=np.load('myarrzip.npz')
>>> myzip['a']
array([0, 1, 2, 3, 4, 5, 6, 7])
存到文本文件
np.savetxt()
np.loadtxt('name.txt',delimiter=',')