Numpy入门(详看注释)

一.np创建array

import numpy as np
array = np.array([[1,2,3],
                  [2,3,4]])
print(array)
print('number od dim',array.ndim) #查看数组的维数
print('shape',array.shape)# shape:行数和列数
print('size',array.size)#总共会有多少个元素

二.数组的属性

默认int为32位,float 为64位,位数越高越精确

a = np.array([2,3,4],dtype=np.int)
print(a.dtype)
a = np.zeros((3,4)) #生成3行4列的零矩阵,zeros可以换成ones\empty
a = np.arange(10,20)#生成有序的矩阵
a = np.arange(12).reshape((3.4))#元素从0-12,尺寸大小为3行4列
a = np.linspace(1,10,20)#生成从1-10,步长为20的序列(随机的步长),同样可以进行.reshape((3,4))

三.numpy 基础运算

import numpy as np
a = np.array([10,20,30,40])
b = np.array(4)
print(a,b)
c = a-b# c= b**2  d=10*np.sin(a)
print(c)
print(b<3'''b==3同样可以作为条件''') #判断b中那个元素小于3,会输出一个列表[true,flase...]这类的
import numpy as np
a = np.array([[1,1],[0,1]])
b = np.array(4).reshape((2,2))
c = a*b #元素对应相乘
c_dot = np.dot(a,b) #矩阵的乘法
c_dot_ = a.dot(b) #与上面的结果完全相同

d = np.random.random((2,4)) #随机生成一个2行4列的矩阵
# 定义整个矩阵的最大、小元素,整个矩阵求和
# 若求单列,格式为 np.sum(a,axis=1)
# 若求单行,格式为 np.sum(a,axis=0)
np.sum(a)
np.max(a)
np.min(a)
import numpy as np
a = np.arange(2,14).reshape((3,4))
# 分别找到矩阵中最大值和最小值的索引、平均值(3种写法)\中位数
np.argmin(a)
np.argmax(a)
np.mean(a)
np.average(a)
a.mean()
np.median(a)
np.cumsum(a) #累加
np.diff(a) #累差
np.nonzero(a) #不是0的元素的行、列矩阵
np.sort(a) #排序
np.transpose(a) #矩阵转置  等价于 a.T
np.clip(a,5,9) # 矩阵中所有小于5的数变成5,所有大于9的数变成9
np.mean(a,axis=0) #同样可以对行/列进行计算

四.numpy 索引

import numpy as np
# 使用数组索引 二维数组
a = np.arange(3,15).reshape((3,4))
a[2][1]
a[2,1] #二者等价
a[2,:] # 第二行的所有数
a[:,1] # 第一列的所有数
a[1.1:2] #第一行的从1-2的值

for row in a:
    print(row) #迭代a 的每一行
for column in a.T:
    print(column)#迭代a的列
for item in A.flat:# .flat 是一个迭代器,依次输出数组中的每个元素
    print(item)

五.numpy 合并

import numpy as np
a = np.array([1,1,1])[:,np.newaxis] #也可以直接加在后面
b = np.array([2,2,2])[:,np.newaxis]
c = np.vstack((a,b)) #上下合并 vertical stack
d = np.hstack((a,b)) #左右合并 horizontal stack
print(a.shape,c.shape)
print(a.shape,d.shape)
a[np.newaxis,:] #在行上加一个维度
a[:,np.newaxis] #在列上加一个维度
e = np.concatenate((a,b,b,a),axis=0) #指定在哪个方向(维度)合并

六.numpy 分割

import numpy as np
a = np.arange(12).reshape((3,4))
print(np.split(a,2,axis=1) )# 在纵向将数组分成两块
print(np.split(a,3,axis=0) )# 在横向将数组分成三块
np.array_split(a,3,axis=0) # 进行不等量分割
np.vsplit(a,3) # 纵向分成3块的分割
np.hsplit(a,2) # 横向分成2块的分割

七.numpy 的copy&deep copy

import numpy as np
a = np.arange(4)
b = a
c = a
d = a
a[0] = 11
# 此时 a,b,c,d同时被改变
d[1:3] = [22,33] # 仍然完全一样
# b与a同,但是不关联a,即改变a值b不变
b = a.copy() # deep copy
a[3] = 44
print(a)
print(b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值