numpy数组基础

目录

创建数组

多维数组切片

 数组属性

 

使用数组

数组特殊运算符

索引进阶

花式索引


创建数组

在numpy中,创建数组有很多种方法,例如如下的例子:

import numpy as np
sws_1 = np.array([0, 1, 2, 3, 4])
sws_2 = np.array((0, 1, 2, 3, 4))
sws_3 = np.arange(5) 
sws_4 = np.linspace(0, 2 * np.pi, 5)

print(sws_1[1:3])  # 切片
print(sws_2)
print(sws_3)
print(sws_4)
print(sws_1[3])

######
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0.         1.57079633 3.14159265 4.71238898 6.28318531]
3

np.arange()和np.linspace()方法可以参考python之range()、arange()和linspace()这篇文章

切片的知识也可以参照python列表之部分列表——切片,毕竟一维数组的切片还是一样的

多维数组切片

多维数组的切片要比一维数组复杂一点,但也只是一点点哦,让我们一起来看

import numpy as np
from numpy import arange

sws_1 = np.array([arange(0, 5),
                  arange(5, 10),
                  arange(10, 15),
                  arange(15, 20),
                  arange(20, 25)])

print(sws_1[0, 1:4], '\n')  # 在第0行进行1:4的切片
print(sws_1[1:4, 0], '\n')  # 在第0列进行1:4的切片
print(sws_1[::2, ::2], '\n')  # 从列、行的0开始,最后结束,分别步进为2取值
print(sws_1[:, 1], '\n')  # 在第一列取所有元素

######
[1 2 3] 

[ 5 10 15] 

[[ 0  2  4]
 [10 12 14]
 [20 22 24]] 

[ 1  6 11 16 21]

 数组属性

现在来看看怎么查看数组的一些属性

import numpy as np
from numpy import arange

sws_1 = np.array([arange(0, 5),
                  arange(5, 10),
                  arange(10, 15),
                  arange(15, 20),
                  arange(20, 25)])

print(type(sws_1))  # 数据结构类型,如list,dict等
print(sws_1.dtype)  # 数据元素类型,如int,float等,还有位的大小
print(sws_1.size)  # 统计元素个数
print(sws_1.shape)  # 相当于数学里的(x,y,z)
print(sws_1.itemsize)  # 每项占用的字节数,一个字节有8位
print(sws_1.ndim)  # 数组的维度
print(sws_1.nbytes)  # 数组中所有数据消耗的总字节

######
<class 'numpy.ndarray'>
int32
25
(5, 5)
4
2
100

 

使用数组

基本操作符+、-、*、/、**、<、>和dot()

import numpy as np
from numpy import arange

sws_0 = arange(30, 55)
sws_0 = sws_0.reshape((5, 5))  # 让sws_0的所有元素按照(5,5)的维度排列

sws_1 = np.array([arange(0, 5),
                  arange(5, 10),
                  arange(10, 15),
                  arange(15, 20),
                  arange(20, 25)])


# 对应索引位置的元素进行运算
print(sws_0 + sws_1)
print(sws_0 - sws_1)
print(sws_0 * sws_1)
print(sws_0 / sws_1)
print(sws_0 ** 2)
print(sws_0 < sws_1)
print(sws_0 > sws_1)

# 矩阵的乘法
print(sws_0.dot(sws_1))

至于结果就不给大家发出来啦,毕竟太长了嘛,占篇幅,大家看着也疲劳,不过大家要自己动手试试哦

数组特殊运算符

如果要找数组中的一些特殊值,比如最大、最小或者求和呀,这里也可以很方便的

from numpy import arange

sws_0 = arange(10)


print(sws_0.sum())
print(sws_0.min())
print(sws_0.max())
print(sws_0.cumsum())  # 第一位先存入一个列表,然后第一位加第二位再存入列表,之后再加上第三位存 
                       # 入列表,以此类推


######
45
0
9
[ 0  1  3  6 10 15 21 28 36 45]

索引进阶

花式索引

import numpy as np

sws_0 = np.arange(0, 10)
sws_1 = sws_0[[1, 5, -1]]  # 用一个列表包装想要打印的元素的索引
sws_2 = sws_0[sws_0 >= 6]  # 根据条件判断
sws_3 = np.where(sws_0 <= 6)  # 返回满足条件的元素的索引
sws_4 = np.where(sws_0 >= 6)[0]


print(sws_0)
print(sws_1)
print(sws_2)
print(sws_3)
print(sws_4)

######
[0 1 2 3 4 5 6 7 8 9]
[1 5 9]
[6 7 8 9]
(array([0, 1, 2, 3, 4, 5, 6], dtype=int64),)
[6 7 8 9]
posted @ 2021-08-14 12:25  放氮气的蜗牛  阅读(3)  评论(0编辑  收藏  举报  来源