Python-Numpy学习1

2018-07-09  本文已影响0人  兜里有颗糖儿

安装numpy

conda install numpy 或者是 pip install numpy


基础用法

import numpy as np
#1.一位数组
my_list=[1,2,3,4,5,6,7,8,9]
my_numpy_list=np.array(my_list)     #输出:[1 2 3 4 5 6 7 8 9]

2.二维/多维列表
second_list=[[1,2,3],[5,6,7],[8,9,0]]
my_numpy_second_List=np.array(second_list)
print my_numpy_second_list
print my_numpy_second_List.shape
#[[1 2 3]
# [5 6 7]
#[8 9 0]]
#(3, 3)

3.arange
list1=np.arange(10)
print list1            #[0 1 2 3 4 5 6 7 8 9]
list2=np.arange(1,10,2)
print list2                #[1 3 5 7 9]

4. zeros 全0
list3=np.zeros(7)
print list3                 #[ 0.  0.  0.  0.  0.  0.  0.]

5.ones 全1
list4=np.ones(5)
print list4               #[ 1.  1.  1.  1.  1.]
list5=np.ones((2,6))
print list5
#[[ 1.  1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.  1.]]

6. linspace        #⚠️这个不太熟悉,需要再加深印象
lin_arr=np.linspace(1,3,15)
print lin_arr
#[ 1.          1.14285714  1.28571429  1.42857143  1.57142857  1.71428571
#  1.85714286  2.          2.14285714  2.28571429  2.42857143  2.57142857
#  2.71428571  2.85714286  3.        ]

7. eye         #这个不太熟悉,需要再加深印象
my_matrx=np.eye(6)
print my_matrx
#[[ 1.  0.  0.  0.  0.  0.]
# [ 0.  1.  0.  0.  0.  0.]
# [ 0.  0.  1.  0.  0.  0.]
# [ 0.  0.  0.  1.  0.  0.]
# [ 0.  0.  0.  0.  1.  0.]
# [ 0.  0.  0.  0.  0.  1.]]

8.rand 随机产生数字
my_rand=np.random.rand(5,4)
print my_rand
#[[ 0.19058941  0.01583677  0.56039447  0.62691349]
# [ 0.40641409  0.64774593  0.38530584  0.06756001]
# [ 0.22409824  0.32093899  0.62316059  0.7889666 ]
# [ 0.66718905  0.17998823  0.02650176  0.93572683]
# [ 0.84806273  0.25490713  0.41677261  0.90502119]]
#打印了3次,均为这个结果。多次打印不随机
my_rand=np.random.rand(4)
print my_rand      #[ 0.66689373  0.03115218  0.55387478  0.9276893 ]

9.randn,以 0 为中心的标准正态分布或高斯分布中产生随机样本
 my_randn=np.random.randn(5,4)
 print my_randn
#[[-0.62363981 -0.10991569 -1.67637544  1.00907201]
# [-0.57020259  1.12572032 -0.5793159  -1.98747355]
# [-0.60594079 -0.01324758  0.17214394  0.61305687]
# [ 0.43345439  0.8352919  -0.2378221   1.09331725]
# [-0.21542862  0.5592559  -0.98662748 -0.18555707]]
#打印了3次,均为这个结果。多次打印不随机
10.randint 随机产生的数字,都是int型
print np.random.randint(20)             #3/16/17   多次打印随机
print np.random.randint(2,20)          #14/3 多次打印随机
print np.random.randint(2,20,4)      #4位输出的数字的个数,[ 7 13  3  5]
 
11.randint
arr_2=np.random.randint(0,20,10)     #arr_2=[ 1  1 18 15 11 16  1  9 17  8]
print arr_2.max()        #18
print arr_2.min()         #1
print arr_2.argmax()  #显示出来,最大的那个数字的索引位置,18的位置为2
print arr_2.argmin()  #显示出最校的数字的索引为0

12.列表的表示的形式
two_d_arr=np.array([[10,2,30],[30,40,50],[60,70,80]])
print two_d_arr[2][2]
print two_d_arr(2,2)
print two_d_arr[:1,:2]  ###重点注意下⚠️
print two_d_arr[:2]
print two_d_arr[2]

13.⚠️重点注意一下,bool和数字的转换
 new_arr=np.arange(5,15)              #array([ 5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
 new_arr>10                    #array([False, False, False, False, False, False,  True,  True,  True,  True], dtype=bool)
bool_arr=new_arr>10
new_arr[bool_arr]           #array([11, 12, 13, 14])
#另外一种写法
new_arr[(new_arr)>6&(new_arr<10)]        #array([7, 8, 9])

14 广播(重新赋值、+、-、*、/、+n、数学运算)
new_arr[0:3]=30       #array([30, 30, 30,  8,  9, 10, 11, 12, 13, 14])
new_arr*new_arr       #array([900, 900, 900,  64,  81, 100, 121, 144, 169, 196])
new_arr+new_arr       #array([60, 60, 60, 16, 18, 20, 22, 24, 26, 28])
new_arr-new_arr       #array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
new_arr/new_arr       #array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
new_arr+40            #array([70, 70, 70, 48, 49, 50, 51, 52, 53, 54])
#数学运算类
np.sqrt(new_arr)
array([ 5.47722558,  5.47722558,  5.47722558,  2.82842712,  3.        ,
        3.16227766,  3.31662479,  3.46410162,  3.60555128,  3.74165739])
np.exp(new_arr)
array([  1.06864746e+13,   1.06864746e+13,   1.06864746e+13,
         2.98095799e+03,   8.10308393e+03,   2.20264658e+04,
         5.98741417e+04,   1.62754791e+05,   4.42413392e+05,
         1.20260428e+06])
np.sin(new_arr)
array([-0.98803162, -0.98803162, -0.98803162,  0.98935825,  0.41211849,
       -0.54402111, -0.99999021, -0.53657292,  0.42016704,  0.99060736])
np.cos(new_arr)
array([ 0.15425145,  0.15425145,  0.15425145, -0.14550003, -0.91113026,
       -0.83907153,  0.0044257 ,  0.84385396,  0.90744678,  0.13673722])
np.log(new_arr)
array([ 3.40119738,  3.40119738,  3.40119738,  2.07944154,  2.19722458,
        2.30258509,  2.39789527,  2.48490665,  2.56494936,  2.63905733])
np.sum(new_arr)        #167
np.std(new_arr)          #8.8662280593271454
new_arr2=new_arr.reshape(2,5)
new_arr2.sum()
new_arr2.sum(axis=0)   #array([40, 41, 42, 21, 23])
new_arr2.sum(axis=1)    #array([107,  60])
axis=0/axis=1

axis=0,指的是针对于列,进行求和
axis=1,指的是针对于行,进行求和
感觉自己总是对于0、1,列、行,傻傻地分不清
便捷记忆:1,为竖线旋转为行


参考文章:
入门 | 数据科学初学者必知的NumPy基础知识

上一篇 下一篇

猜你喜欢

热点阅读