Numpy 基本使用

numpy 使用

基本使用

import numpy

# 使用 numpy.array 定义矩阵,可以指定矩阵内元素的类型
n = numpy.array([
  [1, 2, 3],
  [3, 4, 3]
], dtype='int16')

# 矩阵的维度,一般就是2维。行和列,每个单元1个元素
print(n.ndim)

# numpy 产生三维矩阵,3行2列,每个单元4个元素
>>> np.zeros((3,2,4))
array([[[ 0.0.0.0.],
        [ 0.0.0.0.]],

       [[ 0.0.0.0.],
        [ 0.0.0.0.]],

       [[ 0.0.0.0.],
        [ 0.0.0.0.]]])


# 矩阵的形状,n 行 m 列
print(n.shape)

# 矩阵元素的总数,n * m
print(n.size)

# 矩阵元素的类型
print(n.dtype)

# 矩阵中每个元素的字节大小,由 dtype 决定
print(n.itemsize)

# 矩阵实际的内存地址
print(n.data)

矩阵的创建

import numpy

# 使用 numpy.array 定义矩阵,可以指定矩阵内元素的类型
n = numpy.array([
  [1, 2, 3],
  [3, 4, 3]
])

# 创建行向量
vector = numpy.array((1, 2, 3, 4))
vector = numpy.arange(1,5)

# 创建二维矩阵
matrix = numpy.array((
  [1, 2, 3],
  [4, 5, 6]
))

# 从文本读取数据存入矩阵, delimiter 是列分隔符。
text = numpy.genfromtxt('world_alcohol.txt', delimiter=',', dtype='str')

world_alcohol.txt
Year,WHO region,Country,Beverage Types,Display Value
1986,Western Pacific,Viet Nam,Wine,0
1986,Americas,Uruguay,Other,0.5
1985,Africa,Cte d'Ivoire,Wine,1.62
1986,Americas,Colombia,Beer,4.27
import numpy

# 使用 numpy.array 定义矩阵,可以指定矩阵内元素的类型
n = numpy.array([
  [1, 2, 3],
  [3, 4, 3]
])

# 创建行向量
vector = numpy.array((1, 2, 3, 4))

# 创建二维矩阵
matrix = numpy.array((
  [1, 2, 3],
  [4, 5, 6]
))

# 从文本读取数据存入矩阵, delimiter 是列分隔符。
text = numpy.genfromtxt('world_alcohol.txt', delimiter=',', dtype='str')

# 创建零矩阵,默认是 dtype 是 flot 类型,就是元素都是零 3行4列
zero = numpy.zeros((3, 4), dtype='int32')
print(zero)

# 创建单位矩阵,就是元素全为1的矩阵 3行4列
one = numpy.ones((3, 4))
print(one)

# 创建从10到30差值为5的等差矩阵,一行,就是和python中的range一样效果
cha = numpy.arange(10, 30, 5)
print(cha)

# 创建随机初始化矩阵,值在 -1 到 1 之间。3行3列
rand = numpy.random.random((3, 3))
print(rand)

# 创建指定区间值的随机行向量(起始值,终点值,个数)
line = numpy.linspace(1, 10, 3, dtype='int16')
print(line)

克隆问题

import numpy

a = numpy.arange(1, 10)

# b 指向了 a 所指的空间,ab指代的是同一个内存区域
b = a
print(a)
print(b)

# b 被改动了,a 也会被改动
b[0] = 0
print(a)
print(b)
import numpy

a = numpy.arange(10)
b = a.view()

# 指向的内存地址不同,但是修改 b ,a也会被修改

print(id(a))
print(id(b))

b[0] = 1

print(a)
print(b)
import numpy

a = numpy.arange(10)

# 创建了一个新的内存空间
b = numpy.copy(a)
print(a)
print(b)

# 修改b,a不会受到影响
b[0] = 1

print(a)
print(b)

numpy 中元素的操作

import numpy

vector = numpy.array((1, 2, 3, 4, 5))

a = numpy.array((
  [1, 2, 3, 4, 5],
  [6, 7, 8, 9, 10],
  [11, 12, 13, 14, 15]
))

# 获取向量的第一个元素
print(vector[0])

# 获取矩阵中的第2行,第3个元素
print(a[1, 2])

# 获取所有行的第三个元素
print(a[:, 2])

# 获取矩阵中第1行到第3行的,第1个元素到第4个元素,前面是行,后面是元素的范围
print(a[0:3, 0:3])

where 函数

numpy.where(conditions ) 不带参数,返回满足条件的元素坐标

import numpy
a = numpy.array((1, 2, 3, 4, 5))
print(numpy.where(a > 2))

# 输出结果 2,3,4 是大于2的,对应的位置是 3,4,5
(array([2, 3, 4], dtype=int64),)
import numpy

a = numpy.array((
  [1, 2, 3, 4, 5, 6],
  [3, 4, 5, 6, 7, 8],
  [10, 1, 12, 345, 12, 11]
))

print(numpy.where(a > 10))

# 输出结果 要组合起来看 (2,2)(2,3)(2,4)(2,5)
(array([2, 2, 2, 2], dtype=int64), array([2, 3, 4, 5], dtype=int64))

numpy.where(conditions , x, y) 带参数,如果 conditions 为真,就把元素替换成 x,否则就替换成 y

import numpy

a = numpy.array((
  [1, 2, 3, 4, 5, 6],
  [3, 4, 5, 6, 7, 8],
  [10, 1, 12, 345, 12, 11]
))

print(numpy.where(a > 10, 1, 0))

# 输出结果
[[0 0 0 0 0 0]
[0 0 0 0 0 0]
[0 0 1 1 1 1]]

 

最新评论
暂无评论
登录后评论