ndarray数据类型
np.array([1, 2, 3]) np.array(range(10)) == np.arange(10)
np.arange(4, 10, 2) a.dtype()表示a里面存放的数据的类型
int64 float64 int8就是i1 8除以8等于1 因为一个字节是八位
t6 = t5.astype('int8') 调整数据类型
t5 = np.array([1, 1, 0, 1,0, 0, ]), dtype=bool)
random() 方法返回随机生成的一个实数,它在[0,1)范围内。
t7 = np.array([random.random() for i in range(10)])
np.round(t7, 2) t7的小数保留两位
t2.shape()表示几行几列的数组, 如果只有一列 则没有值(12, )
只有一个值表示一维数组,两个值表示二维数组,三个值表示三维数组
[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
有两个块,每个块都是2*3的数组(2, 2, 3)
t4.reshape((3, 4))把数组变成3行4列的形式,对本身的t4不会产生变化
这个方法有return 一般不会对自身发生变化
原地操作就是对本身进行修改,没有返回值
reshape((1, 24))不等于reshape(24, )前者是二维数组,后者是一维数组
t5.reshape((t5.shape[0] * t5.shape[1], ))
展开 t5.flatten
二维数组t5 +2以后对每个元素都+2
/0不会报错
nan:not a number 不是一个数字 0/0
0.5/0 infinite 无限
在numpy中0是一个非常非常小的数
两个二维数组相加,对应位置元素相加
乘除都一样
t5-t7只要两个数组在一个维度上一样就能相减;如果行列都不一样就会报错
加减乘除都是一样
二维数组t2[2]取第三行,t2[[2,8,10]]可以取2, 8, 10三个行
print(t2[[2, 10, 3], :])取2, 10, 3三个行 print(t2[1, :])取第二行 print(t2[2:, :])取第三行及以后的行
print(t2[:, 0])取第一列 print(t2[:, 2:])取第三列及之后的每一列
print(t2[:, [0, 2]])取第一列和第三列,数组里面数据的类型是np.int64
print(t2[2:5, 1:4])取第三行到第五行,第二列到第四列,取的是交叉点的位置
取多个不相邻的点t2[[0, 2, 2], [0, 1, 3]]选出来的点是[0, 0]、[2, 1]、[2, 3]
a = 3 if 3>2 else 4 如果if为真,则3赋给a,否则后面的值赋给a
np.where(t<10, 0, 10), 如果数组t中的值小于10替换成0,否则替换成10
t.clip(10, 18)t中小于10的数替换为10,大于18的数替换为18
t2 = t2.astype(float) t2转换为浮点型 nan是浮点型
t2[3, 3] = np.nan 强制转化为nan
np.count_nonzero()判断数组里不是0的数据的个数
np.isnan()判断数组里哪些数据是nan,nan为True,其余为False
np.sum()计算整体的结果 np.sum(t3, axis=0)计算行上的结果,axis=1计算列上的结果
这下面的axis为0的时候计算列方向上的
竖直分割和竖直拼接是互逆的;竖直分割就是横着画一条线,水平分割就是竖着画一条线



