新建数组
a=[]
for i in xxx:
a.append(i[0:13])
多维数组 b = np.array([(1.5,2,3), (4,5,6)])
指定类型 c = np.array( [ [1,2], [3,4] ], dtype=complex )
生成数组并赋值为特殊值 ones:全1 zeros:全0 empty:随机数,取决于内存情况,如果是二维的,即写成np.zeros( (3,4) ,dtype=np.int16 ) 还可以指定数据类型。
生成均匀分布的array:
arange(最小值,最大值,步长)(左闭右开)
linspace(最小值,最大值,元素数量)
指数分布 logspace
对数组中每个元素进行处理,比如 a=arange(5) 2 可以写为
a = [1,2,3,4,5]
b = list(map(lambda x:x2,a))
数组的交/并集
list 可以直接相加
水平组合 np.hstack((a,b ))
垂直组合 np.vstack((a,b)) np.concatenate((a,b),axis=0)
沿着纵轴方向组合 np.dstack((a,b)) 参考链接
数组拼接 np.append(x,y)
合并 np.concatenate((a,b), axis = None)
维度转换
reshape 是把一个已经存在了的ndarray 转换为另一个shape, 即包含了原来所有的数组 ndarray = np.arange(0,12).reshape((3,4))
(注意:新的形状必须保持size相同)
条件筛选
np.where( (arr == 3) | (arr == 1) )
a=np.where((x>5)&(x<10))
print(x[a])
idx=np.where(ne>100)
idx=np.array(idx).reshape(np.size(idx))
print(time[idx])
根据时间挑选最接近某个时刻的下标:
import pyspedas
arr=np.abs(MS_Bw_time-pyspedas.time_double(tt2))
idx12 = np.where(arr == np.amin(arr))
where筛选出来的index是tuple类型,把它转化到array类型:
idx=[]
for item in index:
idx.extend(item)
def find_nearest(array, value):
array = np.asarray(array)
idx = (np.abs(array - value)).argmin()
return array[idx]
def find_nearest2(array,values):
indices = np.abs(np.subtract.outer(array, values)).argmin(0)
return indices
NAN value的处理
把nan 项去除 或 设为0
event_l_shell = event_l_shell[~np.isnan(event_l_shell)]
event_l_shell[np.isnan(event_l_shell)]=0
把NAN 去掉 .dropna()
把NAN替换成某个值 A[np.isnan(A)] = 0 或者.fillna(0)
bad_indices = np.isnan(x) | np.isnan(y)
good_indices = ~bad_indices
good_x = x[good_indices]
good_y = y[good_indices]
生成全是nan 的数组: np.full([3,2], np.nan)
空数组的判断 any(array) == True/False
网友评论