1、对比ndarry和原生list运算效率对比:
import random
import time
import numpy as np
a=[]
for i in range(1000000):
a.append(random.random())
t1=time.time()
sum1=sum(a)
t2=time.time()
b=np.array(a)
t4=time.time()
sum3=np.sum(b)
t5=time.time()
print(t2-t1,t5-t4)
输出:
0.020972490310668945
0.007510185241699219
创建一维数组:
#先创建一个列表——使用np中的np.array将列表转换成为一维数组——打印
import numpy as np
list1=[1,2,3,4]
oneArray=np.array(list1)
print(type(oneArray))
print(oneArray)
输出 :
<class ‘numpy.ndarray’>
[1 2 3 4]
创建一维数组的多种方式:
#1、直接传入列表:
t1=np.array([1,2,3,5,6])
print(t1)
#2、传入range生成序列:
t2=np.array(range(11))
print(t2)
#使用numpy自带的np.arange()生成数组;
t3=np.arange(0,12,2)
print(t3)
输出:
[1 2 3 5 6]
[ 0 1 2 3 4 5 6 7 8 9 10]
[ 0 2 4 6 8 10]
创建二维数组的方式:
import numpy as np
list2=[[1,2],[3,4],[5,6]]
twoArray=np.array(list2)
print(twoArray)
输出:
[[1 2]
[3 4]
[5 6]]
数组常用属性:维度 —形状—元素;
import numpy as np
list2=[[1,2],[3,4],[5,6]]
twoArray=np.array(list2)
print(twoArray)
#获取数组的维度 :
print(twoArray.ndim)
#获取数组的形状(行、列)
print(twoArray.shape)
#查看数组有多少元素:
print(twoArray.size)
输出:
[[1 2]
[3 4]
[5 6]]
2
(3, 2)
6
调整数组的形状:将两列3行变成3行两列
four=np.array([[1,2,3],[4,5,6]])#两列3行;
#修改原有的数组形状,变成3行两列
four.shape=(3,2)
print(four)
print("-"*10)
four=four.reshape(2,3)
print(four)
print("-"*10)
five=four.reshape((6,1),order="F")
print(five)
print("-"*10)
#拓展数组的形状:
t=np.arange(24)
print(t)
print(t.shape)
print("-"*10)
#转换成二维:
t1=t.reshape(4,6)
print(t1)
print(t1.shape)
print("-"*20)
#转换成三维:
t2=t.reshape((2,3,4))
print(t2)
print(t2.shape)
输出:
[[1 2]
[3 4]
[5 6]]
----------
[[1 2 3]
[4 5 6]]
----------
[[1]
[4]
[2]
[5]
[3]
[6]]
----------
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
(24,)
----------
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
(4, 6)
--------------------
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
(2, 3, 4)
将数组转换成列表:
a=np.array([9,12,88,14,25])
list_a=a.tolist()#将数组转换成为列表
print(list_a)
print(type(list_a))
输出:
[9, 12, 88, 14, 25]
<class ‘list’>
numpy的数据类型:
f=np.array([1,2,3,4,5],dtype=np.int16)
print(f)
#返回数组中每个元素的字节单位长度;
print(f.itemsize)
#获取数据类型
print(f.dtype)
#调整数组类型:
f1=f.astype(np.int64)
print(f1.dtype)
#随机生成小数:[1 2 3 4 5]
2
int16
int64
0.56
[0.2 0.88 0.6 0.29 0.6 0.99 0.49 0.1 0.97 0.89]
数组的计算:
```python
t1=np.arange(24).reshape((6,4))
print(t1)
print("-"*30)
print(t1+2)
print("-"*30)
print(t1*2)
print("-"*30)
print(t1/2)
输出:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
------------------------------
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]
[14 15 16 17]
[18 19 20 21]
[22 23 24 25]]
------------------------------
[[ 0 2 4 6]
[ 8 10 12 14]
[16 18 20 22]
[24 26 28 30]
[32 34 36 38]
[40 42 44 46]]
------------------------------
[[ 0. 0.5 1. 1.5]
[ 2. 2.5 3. 3.5]
[ 4. 4.5 5. 5.5]
[ 6. 6.5 7. 7.5]
[ 8. 8.5 9. 9.5]
[10. 10.5 11. 11.5]]
数组与数组之间的操作:
t1=np.arange(24).reshape((6,4))
t2=np.arange(100,124).reshape((6,4))
print(t1)
print("-"*30)
print(t2)
print("-"*30)
print(t1+t2)
print("-"*30)
print(t1*t2)
输出:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
------------------------------
[[100 101 102 103]
[104 105 106 107]
[108 109 110 111]
[112 113 114 115]
[116 117 118 119]
[120 121 122 123]]
------------------------------
[[100 102 104 106]
[108 110 112 114]
[116 118 120 122]
[124 126 128 130]
[132 134 136 138]
[140 142 144 146]]
------------------------------
[[ 0 101 204 309]
[ 416 525 636 749]
[ 864 981 1100 1221]
[1344 1469 1596 1725]
[1856 1989 2124 2261]
[2400 2541 2684 2829]]
行数和列数和多维度数组可以进行计算;
行形状相同:
import numpy as np
t1=np.arange(24).reshape((6,4))
t2=np.arange(0,4)
print(t1,t2)
print(t1-t2)
输出:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17