目录
5.逻辑运算
6.数组高级操作
5.逻辑运算
import numpy as np
x_arr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
y_arr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
cond =np.array([True,False,True,True,False])
#满足条件(condition),输出x,不满足输出y
print(np.where(cond,x_arr,y_arr))
#out<<
[1.1 2.2 1.3 1.4 2.5]
arr = np.random.randn(4,4)
print(arr)
#out<<
[[ 0.44329079 1.90028937 -1.10965935 0.00704608]
[-0.11381241 0.42095381 1.11738858 0.53364408]
[-0.85414205 0.55214384 -1.13165476 -0.91420894]
[-0.53698224 -0.18174922 -1.04781079 0.45641734]]
arr > 0
#out<<
array([[ True, True, False, True],
[False, True, True, True],
[False, True, False, False],
[False, False, False, True]])
print(np.where(arr > 0,1,-1))
#out<<
[[ 1 1 -1 1]
[-1 1 1 1]
[-1 1 -1 -1]
[-1 -1 -1 1]]
6.数组高级操作
arr = np.arange(8)
print(arr.shape)
#out<<
(8,)
#使用reshape来改变tensor的形状
arr.reshape(2,4)
#out<<
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
arr = np.arange(2*3).reshape(2,3)#可以用这种方法创建数组
print(arr)
#out<<
[[0 1 2]
[3 4 5]]
#可以从其他的ndarray中获取shape信息然后reshape
other_arr = np.ones((3,5))
print(other_arr.shape)
#out<<
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
#高维数组可以用ravel来拉平
arr = arr.reshape(other_arr.shape)
print(arr)
#out<<
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
arr.ravel().shape
#out<<
(15,)
arr.ravel()
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
#连接两个二维数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8, 9], [10, 11, 12]])
print(arr1, "\n\n", arr2)
#out<<
[[1 2 3]
[4 5 6]]
[[ 7 8 9]
[10 11 12]]
#增加行
np.concatenate([arr1,arr2],axis = 0)
#out<<
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
#增加列
np.concatenate([arr1,arr2],axis = 1)
#out<<
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])
#堆叠vertical
np.vstack((arr1,arr2))
#out<<
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
#堆叠horizontal
np.hstack((arr1,arr2))
#out<<
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])
#数组拆分
arr = np.arange(4*5).reshape(4,5)
print(arr)
#out<<
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
#[1,2]意思为第一部分为[0,1),第二部分为[1,2),第三部分为[2,3]
first,second,third = np.spilt(arr,[1,2],axis = 0)
print(first,'\n\n',second,'\n\n',third)
#out<<
[[0 1 2 3 4]]
[[5 6 7 8 9]]
[[10 11 12 13 14]
[15 16 17 18 19]]
print(np.split(arr,2,axis = 0))
#out<<
[array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])]
print(np.array_split(arr,4,axis = 0))#注意区分array_split 与 spilt()
#out<<
[array([[0, 1, 2, 3, 4]]), array([[5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14]]), array([[15, 16, 17, 18, 19]])]
#np.split()与array_split()的差别:split必须要均等分,否则会报错。array_split不会
np.spilt()函数详细介绍
https://blog.youkuaiyun.com/mingyuli/article/details/81227629
#堆叠辅助
arr = np.arange(6)
arr1 = arr.reshape((3, 2))
arr2 = np.random.randn(3, 2)
print(arr1)
print(arr2)
#out<<
[[0 1]
[2 3]
[4 5]]
[[-1.38681179 0.92904795]
[-1.22763355 -0.97994103]
[-0.88051718 1.18033883]]
#r_ 用于按照行堆叠rows
print(np.r_[arr1,arr2])
#out<<
[[ 0. 1. ]
[ 2. 3. ]
[ 4. 5. ]
[-1.38681179 0.92904795]
[-1.22763355 -0.97994103]
[-0.88051718 1.18033883]]
#c_用于按照列堆叠column
print(np.c_[np.r_[arr1, arr2], arr])
#out<<
[[ 0. 1. 0. ]
[ 2. 3. 1. ]
[ 4. 5. 2. ]
[-1.38681179 0.92904795 3. ]
[-1.22763355 -0.97994103 4. ]
[-0.88051718 1.18033883 5. ]]
#切片直接转化为数组
np.c_[1:6,-5:0]
#out<<
array([[ 1, -5],
[ 2, -4],
[ 3, -3],
[ 4, -2],
[ 5, -1]])
np.r_[1:6,-5:0]
#out<<
array([ 1, 2, 3, 4, 5, -5, -4, -3, -2, -1])
#使用repeat来重复按元素重复
arr = np.arange(3)
print(arr)
#out<<
[0 1 2]
#每一个元素重复3次
print(arr.repeat(3))
#out<<
[0 0 0 1 1 1 2 2 2]
#指定行或列来重复
arr = np.arange(3*4).reshape(3,4)
print(arr)
#out<<
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
#重复行
print(np.repeat(2,axis = 0))
#out<<
[[ 0 1 2 3]
[ 0 1 2 3]
[ 4 5 6 7]
[ 4 5 6 7]
[ 8 9 10 11]
[ 8 9 10 11]]
print(arr.repeat(2,axis = 1))#每一列重复
#out<<
[[ 0 0 1 1 2 2 3 3]
[ 4 4 5 5 6 6 7 7]
[ 8 8 9 9 10 10 11 11]]
np.tile()
#按照要求复制整个矩阵
print(arr)
print()
print(np.tile(arr,2))#左—>右
#out<<
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 0 1 2 3 0 1 2 3]
[ 4 5 6 7 4 5 6 7]
[ 8 9 10 11 8 9 10 11]]
#print(np.tile(arr, (0,2)))#上——下
#print(np.tile(arr, (2,2)))#上下 左右
317



被折叠的 条评论
为什么被折叠?



