NumPy创建数组的方法

np.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])

b = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint8)

这里的特殊数值指的是0、1、空值。特殊数值法适合构造全0、全1、空数组,或由0、1组成的类似单位矩阵(主对角线为1,其余为0)的数组。

np.zeros(shape, dtype=float, order='C')
np.ones(shape, dtype=float, order='C')
np.empty(shape, dtype=float, order='C')
np.eye(N, M=None, k=0, dtype=float, order='C')

固定参数shape表示生成的数组结构,默认参数dtype用于指定数据类型(默认浮点型)。order参数指定的是数组在内存中的存储顺序, 'C'表示C语言使用的行为优先方式, 'F'表示Fortran语言使用的列优先方式

import numpy as np

print(np.zeros(6))
print(np.zeros((2, 3)))
print(np.ones((2, 3), dtype=int))
print(np.empty((2, 3)))
print(np.eye(3, dtype=np.uint8))

如果需要一个3行4列,初始值都是255的无符号整型数组

  • 方案1:全1数组乘以255
  • 方案2:全0数组加255
  • 方案3:使用填充函数 fill()
import numpy as np

a = np.empty((3, 4), dtype=np.uint8)
a.fill(255)
print(a)
np.random.random(size=None)
np.random.randint(low, high=None, size=None)
np.random.normal(loc=0.0, scale=1.0, size=None)

random()函数用于生成 [0,1)区间内的随机浮点型整数, randint()函数用于生成 [low,high)区间内的随机整形数组。参数size是一个元组,用于指定生成数组的结构

import numpy as np

print(np.random.random(3))
print(np.random.random((2, 3)))
print(np.random.randint(5))
print(np.random.randint(1, 5, size=(2, 3)))

normal()函数用于生成以loc为均值、以scale为标准差的正态分布数组。

import numpy as np

import matplotlib.pyplot as plt

tall = np.random.normal(170, 4, 1000)

bins = np.arange(156, 190, 2)

plt.hist(tall, bins)

plt.show()
import numpy as np

np.arange(start, stop, step, dtype=None)
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

arange()函数和Python的 range()函数用法相同,并且还可以接收浮点型参数

import numpy as np

print(np.arange(5))
print(np.arange(5, 11))
print(np.arange(5, 11, 2))
print(np.arange(5.5, 11, 1.5))
print(np.arange(3, 15).reshape(3, 4))

linspace()函数需要3个参数:一个起点、一个终点、一个返回元素的个数。 linspace()函数返回的元素包括起点和终点,可以通过 endpoint参数选择是否包含终点

import numpy as np

print(np.linspace(0, 5, 5))

print(np.linspace(0, 5, 5, endpoint=False))

repeat()函数用来重复数组元素。但如果被重复的数组是一个多维数组,且 repeat()函数指定了 axis参数,情况就会变得有些复杂

import numpy as np

a = np.arange(5)
print(a)

print(np.repeat(a, 3))
a = np.arange(6).reshape((2, 3))
print(a)

print(np.repeat(a, 3))

print(np.repeat(a, 3, axis=0))

print(np.repeat(a, 3, axis=1))

tile()将整个数组而非数组元素水平和垂直重复指定的次数

import numpy as np

a = np.arange(5)
print(a)

print(np.tile(a, 3))

print(np.tile(a, (3, 2)))
a = np.arange(6).reshape((2, 3))
print(a)

print(np.tile(a, 3))

print(np.tile(a, (2, 3)))
  • 用数组表示经纬度网格方式一:用两个一维数组表示。使用定长分隔函数 linspace(),将经度从 -180°180°分为间隔为 10°的37个点,将纬度从 90°-90分为间隔为 10°的19个点,得到两个一维数组
import numpy as np

lon = np.linspace(-180, 180, 37)

lat = np.linspace(90, -90, 19)
  • 用数组表示经纬度网格方式二:用两个二维数组分别表示经度网格和纬度网格。经度网格中每一列的元素都是相同的(同一个经度),纬度网格中每一行的元素都是相同的(同一个纬度)。生成二维经纬度网格的常用函数是 np.meshgrid(),该函数以一维经度数组lon和一维纬度数组lat为参数,返回二维的经度数组和纬度数组
import numpy as np

lon = np.linspace(-180, 180, 37)

lat = np.linspace(90, -90, 19)

lons, lats = np.meshgrid(lon, lat)
print(lons.shape)
print(lats.shape)
print(lons[:,0])
print(lons[0])
  • 构造经纬度网格,除了使用 np.meshgrid()函数外,还有一个更强大的方法,这个方法可以直接生成纬度网格和经度网格而无需借助于一维数组(请注意,纬度在前,经度在后)
import numpy as np

lats, lons = np.mgrid[90:-91:-5, -180:181:5]
print(lons.shape, lats.shape)

lats, lons = np.mgrid[90:-90:37j, -180:180:73j]
print(lons.shape, lats.shape)
  • 结果显示:数组会将所有元素的数据类型都转为 '<u32'< code>&#x7C7B;&#x578B;&#x3002;&#x8FD9;&#x91CC;&#x7684;U&#x6807;&#x8BC6;Unicode&#x5B57;&#x7B26;&#x4E32;&#xFF1B;<code><</code>&#x8868;&#x793A;&#x5B57;&#x8282;&#x987A;&#x5E8F;&#xFF0C;&#x610F;&#x4E3A;&#x5C0F;&#x7AEF;&#x5728;&#x524D;(&#x4F4E;&#x4F4D;&#x5B57;&#x8282;&#x5B58;&#x50A8;&#x5728;&#x6700;&#x5C0F;&#x5730;&#x5740;&#x4E2D;)&#xFF1B;32&#x8868;&#x793A;&#x6570;&#x7EC4;&#x5143;&#x7D20;&#x5360;&#x7528;32&#x5B57;&#x8282;&#xFF0C;&#x6570;&#x7EC4;&#x5143;&#x7D20;&#x5360;&#x7528;&#x7684;&#x5B57;&#x8282;&#x6570;&#x7531;&#x6240;&#x6709;&#x5143;&#x7D20;&#x4E2D;&#x6700;&#x957F;&#x7684;&#x90A3;&#x4E2A;&#x5143;&#x7D20;&#x51B3;&#x5B9A;</u32'<>
import numpy as np

print(np.array(['Anne', 1.70, 55]).dtype)
  • 怎样在数组中保留用以生成数组的列表中的元素类型呢?这就需要用到自定义数据类型了。自定义数据类型类似于C语言的结构体,其代码如下
import numpy as np

mytype = np.dtype([('name', 'S32'), ('tall', np.float), ('bw', np.int)])
print(np.array([('Anne', 1.70, 55)], dtype=mytype))

Original: https://blog.csdn.net/feizuiku0116/article/details/126705818
Author: 飞Link
Title: NumPy创建数组的方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/757655/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球