楼主: ℡小怪兽ヤ
1675 2

[作业] Numpy函数总结大全 [推广有奖]

  • 0关注
  • 1粉丝

高中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
97 个
通用积分
1.9246
学术水平
1 点
热心指数
3 点
信用等级
1 点
经验
604 点
帖子
16
精华
0
在线时间
37 小时
注册时间
2015-6-2
最后登录
2021-6-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
import numpy as np

"""
                通用方法
    1. reduce
    2. accumulate
    3. reduceat
    4. outer
"""
"""
        常用函数

np.abs()
np.abs()
np.fabs()
np.median()
np.sqrt()
np.square()
np.sign()
np.ceil()
np.floor()
np.rint()       #四舍五入到最近的整数
np.modf()    #将数组的小数和整数部分以两个独立的数组方式返回
np.isnan()
np.isfinite()
np.isinf()
np.isin(element=2,test_elements=[1,2,3])
np.power(2,3)
np.subtract([2,3,4],[1,3,5])    #数组减法
np.mod([1,23,25],[2,3,5])       #求模

aa=np.copy(np.arange(10))
np.copysign(np.arange(10),np.repeat(2,10))      #用array2d的符号array1

#       两数组的大小比较
np.greater(np.random.rand(6),np.random.rand(6))
np.less(np.random.rand(6),np.random.rand(6))
np.greater_equal(np.random.rand(6),np.random.rand(6))
np.less_equal(np.random.rand(6),np.random.rand(6))
np.equal(np.random.rand(6),np.random.rand(6))
np.not_equal(np.random.rand(6),np.random.rand(6))

#       逻辑运算
np.logical_and([1,2,3],[2,3,6])
np.logaddexp([1,2,3],[1,1,2])
np.logical_not([1,0,1,2,0,-1])      #变号是否为0
np.logical_or([1,2,3],[2,3,6])
np.logical_xor([1,2,3],[2,3,6])     #异或

"""

arrayB=np.random.rand(20)
np.any(arrayB>0.5)
arrayB.any()

"""
        文件操作函数
np.save(file=,ndarray)
np.savetxt(fname=,X,fmt=,delimiter=,encoding=)
np.savez(file=,arrayA,arrayB,...)
np.load(file=)
np.loadtext(string,delimiter)       #读取txt\csv文件
np.genfromtxt()
np.arange(10).tofile()  #二进制格写入文件
"""

def ultimate_answer(a):
    result=np.zeros_like(a)
    result.flat=4
    return result

myFunc=np.frompyfunc(ultimate_answer,1,1)
#           使用frompyfunc建立通用函数,输入个数,输出个数
myFunc(np.arange(4))
myFunc(np.arange(9).reshape(3,3))

"""
        np.add.reduceat(a,[0,5,2,7])
    第一步用到索引值列表中的0和5,实际上就是对数组中索引值在0到5之间的元素进行reduce操作。
    第二步用到索引值5和2。由于2比5小,所以直接返回索引值为5的元素。
    第三步用到索引值2和7。这一步是对索引值在2到7之间的数组元素进行reduce操作。
    第四步用到索引值7。这一步是对索引值从7开始直到数组末端的元素进行reduce操作。
"""

arrayAA=np.arange(10)
res1=np.add.reduceat(arrayAA,[0,5,2,4,7])
res2=np.subtract.reduceat(arrayAA,[0,5,2,4,7])



"""
    np.ndarray.ndim         #空间维度   axes dimension
    np.ndarray.shape        #dimension of array
    np.ndarray.size         #元素个数
    np.ndarray.dtype        #数据类型
    np.ndarray.itemsize     #每个元素的字节大小
    np.ndarray.data         #数组数据
"""

arrayA=np.arange(15).reshape(3,5)           #先列后行
print(arrayA)
print("A\' shape is:",arrayA.shape)
print(arrayA.ndim)

arrayB=np.arange(60).reshape(3,4,5)         #3*4*5矩阵 3个4*5矩阵
print(arrayB)
print(arrayB.ndim)

"""
        创建数组方法
"""
arrayC=np.array([2,3,4])                    #dtype 32
arrayD=np.array([1.1,1.2,1.3,1.4,1.5,1.6])      #dtype 64

arrayF=np.array([(2,3,4),(3,4,5)])          #arrayF and arraryF1 is equal
arrayF1=np.array([[2,3,4],[3,4,5]])

#           array.ravel() equal to  array.reshape(-1) or array.flatten()
lisBB=np.random.rand(16).reshape(4,4)
lisBB.ravel()
lisBB.flatten()

lisBB.shape=(2,8)
lisBB.resize((4,4))
lisBB.T             #   equal to array.transpose()
lisBB.transpose()



lisB=np.arange(12).reshape(3,4)
lisC=lisB.reshape(-1)           #变为一维数组
lisD=lisB.reshape(-1,1)         #
lisE=lisB.reshape(-1,2)

lisAA=np.random.rand(24).reshape(2,3,4)
lisAA[:,:,2]                #返回2*3数组
lisAA[0,...]                #返回3*4数组
lisAA[::-1]                 #逆序输出

#               创建虚数
arrayE=np.array([[2,3+1j,4],[3,4+3j,5]],dtype=complex)
ComplexA=np.complex(2,2)
arrayE.imag         #虚部
arrayE.real         #实部

a=np.array([[1,2],[2,4]])
b=np.array([[1,3],[2,5]])
c=np.dot(a,b)     #向量乘积

"""
                    数组、矩阵的组合和分割函数
"""
#           列组合
np.column_stack(np.array(np.random.rand(4)),np.array(np.random.rand(4)))
np.column_stack(a,b)        #a,b可以为多维数组
#           矩阵水平组合
np.hstack((a,b))        # 2*2与2*2组合为2*4
np.concatenate((a,b),axis=1)

#           返回数组的唯一元素
np.unique(np.array([1,1,2,3,3,4,5,5,5]))

#           四舍五入
# np.round(arrayA,decimals=,out=)
np.round(np.random.rand(10)*10,3)
np.around(np.random.rand(10)*10)  #没有设置小数点时,取最近整数值
np.rint(np.random.rand(10)*10)
np.around(np.random.rand(10)*10,decimals=2)
np.around(np.random.rand(10)*10,decimals=-1)    #取整数,无小数点

#       矩阵垂直组合
np.concatenate((a,b),axis=0)    # 2*2与2*2组合为4*2
np.vstack((a,b))
#       矩阵深度组合,将一系列数组按照纵轴进行层叠组合
np.dstack((a,b))


#               分割函数
#       hsplit():水平方向分割
ArrayX=np.arange(24).reshape(3,8)
SplitRowArray=np.hsplit(ArrayX,8)
SplitRowArrayA=np.split(ArrayX,8,axis=1)        #二者等价
#       垂直分割
np.vsplit(ArrayX,3)
np.split(ArrayX,3,axis=0)       #二者等效
#           深度分割
ArrayXX=np.arange(48).reshape(3,4,4)
np.dsplit(ArrayXX,4)        #
np.dsplit(ArrayXX,2)
# np.dsplit(ArrayXX,3)        #Error



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 1 人评分论坛币 收起 理由
阿扁V5 + 2 精彩帖子

总评分: 论坛币 + 2   查看全部评分

沙发
阿扁V5 学生认证  发表于 2018-12-18 16:34:50 |只看作者 |坛友微信交流群

使用道具

藤椅
heiyaodai 发表于 2019-6-14 21:57:50 |只看作者 |坛友微信交流群
谢谢分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-4 18:59