Python numpy入门

Python numpy入门

import numpy as np  
  
data1 = [1,2,3,4,5]  
array1 = np.array(data1) # 得到ndarray类型的张量  
data2 = [[1,2,3],[4,5,6]]  
array2 = np.array(data2)  
array3 = np.array(5)  
print(array1.ndim,array1.shape)  # 深度 规模  
print(array2.ndim,array2.shape)  
print(array3.ndim,array3.shape)  
  
# ones  
print(np.ones(shape=(2,2)))   
print(type(np.ones(shape=(2,2))[0][0]))  
  
# 数学运算  
a = np.array([[1,1,1],[2,2,2]])  
b = np.array([[3,3,3],[4,4,4]])  
print('bbbb')  
print(b)  
c = a + b  
print(c)  
d = a*b  # 每个对应位置相乘,不是矩阵乘法  
print(d)  
  
# 矩阵运算  
a = a.T # 转置  
e = np.dot(a,b)  
print(e)  
print(e.dtype) #数据类型  
r = b.reshape(-1) # b不会改变 将矩阵转为1维  
print(r)  
print(r.reshape(3,2)) # 转换成[3,2]矩阵  
  
# 加入行/列  
f = np.column_stack((b,np.ones((2,1)))) # 传入的参数是元组  
print(f)  
  
# 通用函数    
print(np.sqrt(b))  
  
# 三目运算符where  
a = np.array([[1,7],[8,9]])  
b = np.array([[2,4],[5,6]])  
g = np.where(a>b,a,b)  
print(g)  
  
# 切片和索引  
a = np.linspace(1,10,10)  
print(a)  
print(a[5:8])  
  
# 跟列表最重要的区别是,数组切片是原始数组的视图。这意味着数据不会被复制,任何修改都会直接反映到源数组  
b = np.array([[1,2,3],[4,5,6],[7,8,9]])  
print(b[1])  
print(b[1][1],b[1,1]) #等价  
print(b[1,:2]) #[4 5]  
print(b[:,:2])  # 得到每行的前两列  
print(b[:][:2])  #得到0 1 行  
  
# 随机值  
c = np.random.randn(7,4)  
print(c)  
  
# bool数组  
d = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'], dtype='<U4')  
print(d)  
print(np.array(d=='Bob',dtype=bool))  
# bool和数字同时使用  
print(c[d=='Bob'])  # 选择d=='Bob'为True的行  
print(c[d=='Bob',2:]) #选择d=='Bob'为True的行 且 3,4列  
cc = c[d=='Bob',3] #第四列  
print(type(cc))  
print(cc[1])  
# 使用 ~ 表示非 和 != 等价  
print(c[~(d == 'Bob')])  
# |代表或  
print((d=='Bob')|(d=='Will'))  
# 将小于0的值变为0  
c[c<0] = 0  
print(c)  
  
# 花式索引  
e = np.empty((8,4))  
for i in range(8): #每行都是i  
    e[i] = i  
print(e)  
  
ee = e[[4,3,0,6]] # 会开辟新的内存,对ee改变不会对e产生影响  
print(ee)  
  
f = np.arange(32).reshape((8,4))  
print(f)  
print(f[[1,5,7,2],[0,3,1,2]])  # 选中的是(1,0) (5,3)..  
  
print('aaa')  
print(f[[1,5,7,2]][:,[0,3,1,2]]) # 依次取1,5,7,2行的0,3,1,2列  
print('bbb')  
# ix_()  
print(f[np.ix_([1,5,7,2],[0,3,1,2])])  # 依次取1,5,7,2行的0,3,1,2列  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值