安装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基础知识
网友评论