axis==ass 1 行走 进去
axis=0为列操作
axis=1为对行操作
bool 只有两种变化,0,1,用1B存储
df中object类型是字符串类型,只存储指向字符串的指针,来保证同int8一样,每个元素占用存储空间一样,同numpy
numpy中的array不能同list一样可改变长度,list是动态的,array是固定长度的
打开text
with open(path,'r',encoding="utf-8") as f:
'r':只读
'r+':读写
'a':追加
'w':覆盖写入
encoding:gbk/ansi
global
a=3
def b():
global a
print(a)
try
while True:
try:
kk=pa(url,head)
except socket.timeout:
time.sleep(2)
continue
except Exception:
time.sleep(5)
continue
else:
break
numpy
np_array=np.loadtxt('aa.csv.gz',dellimiter=',',dtype=np.float32)
np_array=np.array([[1 1 1 1 0],[2 2 2 2 0]])
np_array[:,:-1]
np_array[:,-1]
np_array[:,[-1]]
2*np.array([1,2,3])==np.array([2,4,6])
2+np.array([1,2,3])==np.array([3,4,5])
np.array([1,2,3])-2==np.array([-1,0,1])
np.array([[1,2,3],[4,5,6]])-np.array([1,1,1])==array([[0, 1, 2],
[3, 4, 5]])
array.dtype查看其中元素的类型
np.random.randint(0,high=2,size=layer_output.shape)
np.random.random(size=())
np.random.shuffle(array)
np.arange(5)
np_array[indices]
array_1==array_2
(array_1==array_2).all()
(array_1==array_2).any()
array.shape
np.zeros(5)==array([ 0., 0., 0., 0., 0.])
np.zeros((5,),dypte=np.int)==array([0, 0, 0, 0, 0])
np.zeros(shape,dtype=np.float,order='C')
'''
order:'C' 类似C语言风格,在内存中按行存储
'F' 类似Fortran风格,在内存中按列存储
'''
np.zeros_like(array_like,dtyp=None,order='K',subok=True,shape=None)
'''
dtype:数据类型
order:
'''
np.all(array_like,axis=None)
'''
array_like:可转换为array的对象,可为df
axis:为None时检测所有位置,得到一个 bool型
为0按列检测,得到bool型数组
为1按行检测,得到bool型数组
'''
a=array_1
b=array_2
a==b返回矩阵,每个位置是否相等
(a==b).all()
(a==b).any()
np.delete(array_like,index/index_arr,axis=None)
'''
axis:为None时,表示展平的array
'''
np.where(cond,x,y)
'''
cond 是一个bool形状的array_like,可为df
x,y可为单个元素,或者array_like,为array_like时要和cond的形状一样
'''
np.where(array_like)
np.where(np.all(df.iloc[:,1:ncol]>cutoff_high,axis=1),df['max'],np.where(np.all(df.iloc[:,1:ncol]<cutoff_low,axis=1),df['min'],df['median']))
'''
xx=np.all(df.iloc[:,1:ncol]>cutoff_high,axis=1): df所选中的区域,按行来看,满足条件的为True,不满足条件的为False,索引为原索引,是个se
np.where(xx,df['max'],2) xx为True的位置,在同样位置去df['max'],为False的位置取2
'''
arr2=np.array(data1 dtype='float32')
arr3=np.asarray(data1 dtype='float32')
'''
np.array()和np.asarray都是讲数据结构转换为np_array的类型
当数据结构为列表时,都是复制出一个
当数据结构为array时,asarray直接在对元数据进行更改,而array复制一个副本
'''
array.reshape(-1)
array.reshape(-1,1)
array.reshape((chang,kuan))
1.
np.append(array_1,value/array_2)
2.
np.concatenate((array_1,array_2,..),axis=0)
'''
当array_1和array_2为一维,且axis=0时,同list的extend
axis:默认为0,在列上进行扩展,此时拼接的各数组宽度相同
为1时,在行上进行扩展,此时拼接的各数组长度相同
np.concatenate((np.array([1,2,3]),np.array([4,5,6])),axis=0)
array([1, 2, 3, 4, 5, 6])
'''
numpy.sort(array,axis=-1,kind='quicksort',order=None)
'''
array:要排序的np.array
axis:None 先变成一维的再排序,0 按列排序(按第一个轴排序),1 按行排序,-1 按最后一个轴排序
kind:
kind speed worst case work space stable
‘quicksort’ 1 O(n^2) 0 no
‘heapsort’ 3 O(n*log(n)) 0 no
‘mergesort’ 2 O(n*log(n)) ~n/2 yes
‘timsort’ 2 O(n*log(n)) ~n/2 yes
order:如果数组包含字段,则是要排序的字段
'''
numpy.ndarray.sort(axis=-1, kind='quicksort', order=None)
np.stack(array_like,axis)
np.stack((a,b,c),axis=)
'''
a = np.arange(1, 10).reshape((3, 3))
b = np.arange(11, 20).reshape((3, 3))
c = np.arange(101, 110).reshape((3, 3))
axis=0时,直接将a,b,c堆叠在一起即可
# axis=0可以认为只是将原数组上下堆叠,增加了0维的个数
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[ 11, 12, 13],
[ 14, 15, 16],
[ 17, 18, 19]],
[[101, 102, 103],
[104, 105, 106],
[107, 108, 109]]])
axis=1时,将a,b,c的每个行堆在一起
#axis=1,可以看出第一个3*3的数组是由是a,b,c中每个数组的第一行堆叠而成
array([[[ 1, 2, 3],
[ 11, 12, 13],
[101, 102, 103]],
[[ 4, 5, 6],
[ 14, 15, 16],
[104, 105, 106]],
[[ 7, 8, 9],
[ 17, 18, 19],
[107, 108, 109]]])
axis=2时,将a,b,c的每个列堆在一起,可以看到第一个3*3的数组是由a,b,c中的第一列向量组合而成
array([[[ 1, 11, 101],
[ 2, 12, 102],
[ 3, 13, 103]],
[[ 4, 14, 104],
[ 5, 15, 105],
[ 6, 16, 106]],
[[ 7, 17, 107],
[ 8, 18, 108],
[ 9, 19, 109]]])
'''
np.issubdtype(type(se[0]), np.number)
np.isnan(array)
np.isnan(array).all()
np.isnan(array).any()
np.isin(array_1,array_2,invert=False)
'''
invert 翻转:为True时,如果array_1中元素不在array_2中出现,在相应位置返回True
为False时,如果array_1中元素在array_2中出现,在相应位置返回True
'''
index = np.isin(array_1,array_2,invert=True)
array_1[index]
np.isnan(a)
>> np.nan == np.nan
False
>> np.nan in 含nan数组
False
np.sum(a)==nan
np.min(a)==nan
np.max(a)==nan
a[np.isnan(a)]
np.mean(a[~np.isnan(a)])
a[np.isnan(a)]=np.mean(a[~np.isnan(a)])
from sklearn.imputer import SimpleImputer
im=SimpleImputer(missing_values=np.nan,strategy=’mean',fill_value=None)
'''
missing_values:np.nan缺失值,或想要改变的数字或字符串
strategy:策略
'mean':每列的平均值来填充,只能用于数字
'median':每列的中位数填充,只能用于数字
'most_frequent':每列的众数来填充,可用于数字和字符串
'constant':用fill_value的值来填充,可用于数字和字符串
fill_value:当strategy='constant'时才可用,可为数字或字符串
'''
np.isfinite(array)
np.isinf(array)
np.isposinf(array)
np.isneginf(array)
a=array[:] or a=array
array.copy()
np.iinfo(np.int8).min
np.finfo(np.float32).max
os
import os
os.path.join(路径,路径下某个子文件夹名字)
os.path.join('./data','train')=='./data'+'/'+'train'
os.listdir(路径)
os.chdir(路径)
os.getcwd()
file_path = "E:/tt/abc.py"
filepath,fullflname = os.path.split(file_path)
'''
filepath:E:/tt
fullflname:abc.py
'''
fname,ext = os.path.splitext(file_path)
'''
fname:E:/tt/abc
ext:.py
'''
pandas
import pandas as pd
'''
numpy的运算也适用于Series,对于同索引的Series1,Series2
Series1-Series2
Series1/Series2
Series1-array2=Series3没错是可以的
对于df-df2,同列名的相减,若一个特征只有df有,则最终结果的该列值为nan
'''
Series.abs()
df=pd.read_csv('a.csv.gz',compression='gzip')
df=pd.(read_csv('file_name',header='infer',index_col=False,,usecols=[要读取的列s],engine='c',skiprows=None, nrows=None,seq=',')
'''
seq:默认',',文件中可以有多个分割符 ',|\t| ' |为‘或’的意思
header:默认为'infer'此时以第一行列名
None时:为没有列名
0或其他int,为第几行为列名
0为第一行为列名
skiprows:跳过的文件中的行下标,列名为文件中的下标0行,df中的下标0其实为文件中的下标1
skiprows=array[从df得到的下标]+1
skiprows=np.where(~(df['x']==t))[0]+1 #跳过其他类型
np.where得到元组(array[下标s],)
为int时,表明跳过前n行(df中的非列名行数)
int==3时,无列名(即使设为header=0)
skiprows=[1,2,3]/range(1,4)时,有正常的列名(header=0)
index_col:作为df的index的列,以列名或列索引的形式给出,默认False,不使用第一列作为index
engine:默认为’c',c引擎更快,但是python引擎功能更完善,有时读取大文件时,需python引擎
nrows:读取前多少行,不算列名那一行
#当seq为多个分隔符时,读取文件是需传入nrows,否则会出现错误:Error could possibly be due to quotes being ignored when a multi-char delimiter is used.
'''
df=pd.read_excel('file_name',header=True)
df=pd.read_excel('file_name',header=None)
se.astype(dtype)
df.astype(dtype)
'''
dtype:为numpy.dtype ’int8','float32',np.int12,np.float16
'''
df=pd.DataFrame(二维数据)
df=pd.DataFrame({
'列名1':[第一列数据],'列名2':[第二列数据]})
df=pd.DataFrame(columns=[列名],index=[行名],data=[[],])
'''
data为二维数据,当DataFrame只有一行时,此时data=[[xx],]
'''
ps=pd.Series(字典)
ps = pd.Series(index=[], data=[], name=None)
pd.set_option('display.max_colwidth', -1)
pd.set_option('display.max_rows', 120)
pd.set_option('display.max_columns', 120)
df.sample(n=None,frac=None