【Numpy数据处理】数组基本操作

730

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

1. 生成数组的方法

1.1 生成0,1数组

  • np.ones(shape, dtype)
    • 例如:ones = np.ones([4, 8]),即生成四行八列的数组,其中的元素都为1。
  • np.ones_like(a, dtype)
  • np.zero(shape, dtype)
  • np.zeros_like(a, dtype)
    • 例如:np.zeros_like(ones),括号内传入你想生成的那个数组ones,就可以生成和ones形状一模一样的,元素都是0的数组。

1.2 从现有数组生成

  • 方法1:np.array(object, dtype)
  • 方法2:np.asarray(a, dtype)

代码演示如下所示:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
a1 = np.array(a)      # 深拷贝
a2 = np.asarray(a)   # 浅拷贝

print(a)
print("-"*50)
print(a1)
print("-"*50)
print(a2)

运行结果如下图所示:

image.png

注意:以上两种方式生成现有数组有所不同,若修改了原数组的某一个元素,方法1生成的数组对应元素不会改变,但是方法2生成的数组的对应元素也相应修改。

代码演示如下所示:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
a1 = np.array(a)      # 深拷贝
a2 = np.asarray(a)   # 浅拷贝

a[0, 0] = 666
print(a)
print("-"*50)
print(a1)
print("-"*50)
print(a2)

代码运行结果如下图所示:当原数组第一个元素修改成666以后,a1数组没有发生改变,但是a2数组对应元素也变成了666。

image.png

1.3 生成固定范围数组

1.3.1 等差数组(1)-指定数量

np.linspace(start, stop, num, endpoint)

  • 创建等差数组-指定数量
  • 参数:
    • start:序列的起始值
    • stop:序列的终止值
    • num:要生成的等间隔样例数量,默认为50
    • endpoint:序列中是否包含stop值,默认为ture

代码演示:在0-100范围内,生成11个等差元素

import numpy as np
# 生成等间隔数组
a = np.linspace(0, 100, 11)
print(a)

运行结果:

image.png

1.3.2 等差数组(2)-指定步长

np.arange(start, stop, step, dtype)

  • 创建等差数组-指定步长
  • 参数:
    • step:步长,默认值为1
a2 = np.arange(10, 50, 2)
print(a2)

image.png

1.3.3 等比数列

np.logspace(start, stop, num)

  • 创建等比数列
  • 参数:
    • num:要生成的等比数列数量,默认为50(要生成多少个)
    • 注意:该函数是生成10的多少次方
    • start:指数起始值
    • stop:指数结束值

代码演示:

# 等比数组
a3 = np.logspace(0, 2, 3)
print(a3)

运行结果如下:即生成10的0次方,10的1次方,10的2次方。指数从0到2,总共生成3个数。

image.png