Python练习——数组操作合集

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 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值