开源科学计算库,用于快速处理多个维度的数组,使用简洁高效,使用ndarray对象处理多维数组,该对象是一个快速灵活的大数据容器。其运算速度快是基于内存块存储风格,并行化运算,底层语言
由C语言编写,不受python解释器的限制,解除了GIL。
名字 | 解释 |
---|---|
ndarry.shape | 数组维度元组 |
ndarry.ndim | 数组维度 |
ndarry.size | 数组中元素数量 |
ndarry.itemsize | 数组元素长度(字节) |
ndarry.dtype | 数组元素类型 |
a=np.array(
[
[
[1,2,3],[3,4,5]
],
[
[1,2,3],[4,5,6]
]
])
a.shape
输出为(2,2,3),几个维度几个数字,由嵌套情况得到shape
a=np.array([1,5,6],dtype="float32")
a.dtype
输入为dtype('float32'),此为指定数据类型的方式,不指定
的话,整形默认为int64,浮点为float64
包括ndarray.方法()和np.函数名()两种方式
np.zeros(shape=(3,4))
输出为array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
np.ones(shape=(2,4),dtype="float32")
输出为array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]], dtype=float32)
data1=np.random.uniform(low=-1,high=1,size=1000000)
plt.figure(figsize=(20,8),dpi=80)
plt.hist(data1,1000) #数据 组数
plt.show()
2.正态分布
两个参数μ和σ,代表数据的平均值和标准差
np.random.normal(loc=0.0,scale=1.0,size=None)
data2=np.random.normal(loc=1.75,scale=0.1,size=1000000)
plt.figure(figsize=(20,8),dpi=80)
plt.hist(data2,1000)
plt.show()
data3=np.random.normal(loc=0,scale=1,size=(8,10))
#获取第一个股票前3个交易日的数据 索引
data3[0,0:3]
#行列反转 形状修改
#data3.reshape(10,8) #只是重新分割,返回新的数组,不改变原始数组
#data3.resize(10,8) #无返回值,对原始的数据更改,重新分割
data3.T #数组转置
ndarray.astype(type) 如ndarray.astype(“int32”);
ndarray序列化到本地
ndarray.tostring()
temp=np.array(
[
[1,2,3,4],
[3,4,5,6]
])
np.unique(temp)
输出为array([1, 2, 3, 4, 5, 6])
data4=np.random.normal(loc=1.75,scale=0.1,size=1000000)
#逻辑判断,涨跌幅大于0.5标记为True,否则为False
data4>0.5
#布尔索引
data4[data4>0.5]
np.all(bool)
有一个False则返回False,都是True返回True
np.any()
有一个True则返回True,都是False返回False
np.where(bool,True位置的值,False位置的值)
根据bool将数组化为布尔数组,再根据后两个参数将数组变为相应的值。
复合逻辑运算:
np.logical_and()和np.logical_or()
例如 np.logical_and(temp>0.5,temp<1)
np.logical_or(temp<-0.5,temp>0.5)
将temp<-0.5和temp>0.5之间的数置为1,其余为0
np.where(np.logical_or(temp<-0.5,temp>0.5),1,0)
temp=np.array(
[
[1,2,3,4],
[3,4,5,6],
[5,7,1,4],
[2,8,5,3]
])
#按列求最大值
temp.max(axis=0)
#按行求最大值
np.max(temp,axis=1)
返回最大值,最小值的索引
np.argmax(temp,axis=)
np.argmin(temp,axis=)
temp=np.array(
[
[1,2,3,4],
[3,4,5,6],
[5,7,1,4],
[2,8,5,3]
])
#数组中每一个数加一
temp+1
需要满足广播机制,只有满足以下两种情况才可进行数组间运算
存储方法
temp3=np.array(
[
[1,2],
[3,4],
[5,7],
[2,8]
])
temp4=np.mat(
[
[1,2],
[3,4],
[5,7],
[2,8]
])
形状:(m,n)*(n,l)=(m,l)
ndarray存储相乘的方法:
#ndarray存储
temp3=np.array(
[
[1,2],
[3,4],
[5,7],
[2,8]
])
temp4=np.array(
[
[1,2,3,4],
[3,4,3,2],
])
np.matmul(temp3,temp4)
np.dot(temp3,temp4)
#matrix相乘
matrix1=np.mat(temp3)
matrix2=np.mat(
[ [1,2,3,4],
[3,4,3,2],])
matrix1*matrix2
不适合读取,不支持字符串读取,一般用PANDAS