numpy.array 操作使用简单总结

import numpy as np

numpy.array 常用变量及参数

  • dtype变量,用来存放数据类型, 创建数组时可以同时指定。
  • shape变量, 存放数组的大小, 这人值是可变的, 只要确保无素个数不变的情况下可以任意修改。(-1为自动适配, 保证个数不变)
  • reshape方法,创建一个改变了形状的数组,与原数组是内存共享的,即都指向同一块内存。

创建数组的方法

np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float)
np.arange(0,1,0.1) #0到1之间步长为0.1的数组, 数组中不包含1
np.linspace(0, 1, 5) # 开始:0, 结束1, 元素个数 5。 array([ 0. , 0.25, 0.5 , 0.75, 1. ])
np.logspace(0, 1, 5) # 开始:0, 结束1, 元素个数 5. array([ 10**0. , 10**0.25, 10**0.5 , 10**0.75, 10**1. ])
      # 结果是 array([ 1.  , 1.77827941, 3.16227766, 5.62341325, 10.  ])

s = 'abcdefg'
np.fromstring(s, dtype=np.int8)

def func2(i, j):
 return (i+1) * (j+1)
np.fromfunction(func2, (9,9))

np.ones((2, 2))
np.zero((2, 2))
np.eye(2)

#创建二维数组:
np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)

数据读取

通过下标范围获取数据: 与python list对象操作一致。 不同点是这方法获取的数组与原数组是内存共享的。

通过整数序列获取新数组:例 x[[3,2,3,2] ], 产生新数组, 内存不共享

使用布尔数组获取数据:例: x[np.array([True, False, True, False, False])] 或 x[x>0.5], 返回True对应的数字。

代码示例:

>>> x = np.arange(10)
>>> y = x[::-1]
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> y
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> y[0] = 100
>>> x
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 100])
>>> y
array([100, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> x[0] = 99
>>> x
array([ 99, 1, 2, 3, 4, 5, 6, 7, 8, 100])
>>> y
array([100, 8, 7, 6, 5, 4, 3, 2, 1, 99])
>>> y = x[1:6]
>>> y
array([1, 2, 3, 4, 5])
>>> y[2] = 33
>>> y
array([ 1, 2, 33, 4, 5])
>>> x
array([ 99, 1, 2, 33, 4, 5, 6, 7, 8, 100])
>>> x[[3,2,3,2]]
array([33, 2, 33, 2])
>>> z = x[[3,2,3,2]]
>>> z
array([33, 2, 33, 2])
>>> z[3] = 4
>>> z
array([33, 2, 33, 4])
>>> x
array([ 99, 1, 2, 33, 4, 5, 6, 7, 8, 100])
>>> x[x>10]
array([ 99, 33, 100])
>>>

数组扩展

np.vstack((a, b)):  增加行数, 把b数据追加到a的下面, 上下连接。
np.hstack((a, b)): 增加列数,把a, b左右连接。

>>> a = np.ones((3,3))
>>> b = np.eye(3)
>>> a
array([[ 1., 1., 1.],
  [ 1., 1., 1.],
  [ 1., 1., 1.]])
>>> b
array([[ 1., 0., 0.],
  [ 0., 1., 0.],
  [ 0., 0., 1.]])
>>> b *= 2
>>> b
array([[ 2., 0., 0.],
  [ 0., 2., 0.],
  [ 0., 0., 2.]])
>>> np.vstack((a, b))
array([[ 1., 1., 1.],
  [ 1., 1., 1.],
  [ 1., 1., 1.],
  [ 2., 0., 0.],
  [ 0., 2., 0.],
  [ 0., 0., 2.]])
>>>
>>> np.hstack((a, b))
array([[ 1., 1., 1., 2., 0., 0.],
  [ 1., 1., 1., 0., 2., 0.],
  [ 1., 1., 1., 0., 0., 2.]])

ufunc运算

ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。NumPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。

np.sin(x, x)
np.add(a, b) ~ a+b
np.subtract(a, b) ~ a-b
np.multiply(a, b) ~ a*b
divide ~ a/b
floor divide ~ a//b
negative ~ -a
power ~ a**b
remainder ~ a % b

注意:复杂运算时,中间步聚会有临时变量,这会拖慢运算速度。

如:

x = a*b + c

等价于

t = a*b
x = t + c
del t

所以可手动优化

x = a * b
x += c

二维数组转一维

>>> a
array([[ 1, 2, 3, 4],
  [ 4, 5, 6, 7],
  [ 7, 8, 9, 10]])
>>> a.ravel()
array([ 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10])

reshape函数可重新定义大小。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python numpy.array()生成相同元素数组的示例

    如下所示: new_array = np.zeros((5,4)) for i in range(3): new_array[i] = np.array([0.25]*4) 运行结果: >>> new_array array([[0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0. , 0. , 0. , 0. ], [0. , 0. , 0. , 0. ]]) 以上这篇Pytho

  • 如何实现删除numpy.array中的行或列

    话不多说,直接上代码吧! import numpy as np A = np.delete(A, 1, 0) # 删除A的第二行 B = np.delete(B, 2, 0) # 删除B的第三行 C = np.delete(C, 1, 1) # 删除C的第三列 参考引用: https://stackoverflow.com/questions/1642730/how-to-delete-columns-in-numpy-array 以上这篇如何实现删除numpy.array中的行或列就是小编分享

  • python中利用numpy.array()实现俩个数值列表的对应相加方法

    小编想把用python将列表[1,1,1,1,1,1,1,1,1,1] 和 列表 [2,2,2,2,2,2,2,2,2,2]对应相加成[3,3,3,3,3,3,3,3,3,3]. 代码如下: import numpy a = numpy.array([1,1,1,1,1,1,1,1,1,1]) b = numpy.array([2,2,2,2,2,2,2,2,2,2]) c = a + b print(type(c)) print(list(c)) 输出结果为: <class 'numpy.nd

  • Python中的二维数组实例(list与numpy.array)

    关于python中的二维数组,主要有list和numpy.array两种. 好吧,其实还有matrices,但它必须是2维的,而numpy arrays (ndarrays) 可以是多维的. 我们主要讨论list和numpy.array的区别: 我们可以通过以下的代码看出二者的区别 >>import numpy as np >>a=[[1,2,3],[4,5,6],[7,8,9]] >>a [[1,2,3],[4,5,6],[7,8,9]] >>type(a

  • 对python numpy.array插入一行或一列的方法详解

    如下所示: import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) b = np.array([[0,0,0]]) c = np.insert(a, 0, values=b, axis=0) d = np.insert(a, 0, values=b, axis=1) print(c) print(d) >>c [[0 0 0] [1 2 3] [4 5 6] [7 8 9]] >>d [[0 1 2 3] [0 4 5

  • numpy.array 操作使用简单总结

    import numpy as np numpy.array 常用变量及参数 dtype变量,用来存放数据类型, 创建数组时可以同时指定. shape变量, 存放数组的大小, 这人值是可变的, 只要确保无素个数不变的情况下可以任意修改.(-1为自动适配, 保证个数不变) reshape方法,创建一个改变了形状的数组,与原数组是内存共享的,即都指向同一块内存. 创建数组的方法 np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np

  • 给numpy.array增加维度的超简单方法

    输入: import numpy as np a = np.array([1, 2, 3]) print(a) 输出结果: array([1, 2, 3]) 输入: print(a[None]) 输出结果: array([[1, 2, 3]]) 输入: print(a[:,None]) 输出结果: array([[1],                       [2],                       [3]]) numpy数组的维度增减方法 使用np.expand_dims()

  • Python中11种NumPy高级操作总结

    目录 1.数组上的迭代 2.数组形状修改函数 1.ndarray.reshape 2.ndarray.flat 3.ndarray.flatten 3.数组翻转操作函数 1.numpy.transpose 2. numpy.ndarray.T 3.numpy.swapaxes 4.numpy.rollaxis 4.数组修改维度函数 1.numpy.broadcast_to 2.numpy.expand_dims 3.numpy.squeeze 5.数组的连接操作 1.numpy.stack 2.

  • python中找出numpy array数组的最值及其索引方法

    在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where,其又是list没有的 首先我们可以得到array在全局和每行每列的最大值(最小值同理) >>> a = np.arange(9).reshape((3,3)) >>> a array([[0, 1, 2], [9, 4, 5], [6, 7, 8]]) >>&

  • 使用numpy和PIL进行简单的图像处理方法

    如下所示: from PIL import Image import numpy as np # 反相 # a = np.array(Image.open("test.jpg")) # b = [255, 255, 255] - a # 灰度,反相 # a = np.array(Image.open("test.jpg").convert('L')) # b = 255 - a # 灰度,颜色变谈 # a = np.array(Image.open("te

  • Numpy array数据的增、删、改、查实例

    准备工作: 增.删.改.查的方法有很多很多种,这里只展示出常用的几种. >>> import numpy as np >>> a = np.array([[1,2],[3,4],[5,6]])#创建3行2列二维数组. >>> a array([[1, 2], [3, 4], [5, 6]]) >>> a = np.zeros(6)#创建长度为6的,元素都是0一维数组 >>> a = np.zeros((2,3))#创

  • 聊聊Numpy.array中[:]和[::]的区别在哪

    [:]和[::]的区别蛮大的,用的好可以节省时间,下面以实例进行分析 array([:]) >>> import numpy as np >>> >>> x=np.array([1,2,3,4,5,6,7,8,9,10,11,12]) >>> print(x[1:5])#打印index为1~5的数组,范围是左闭右开 [2 3 4 5] >>> print(x[3:])#打印index=3之后的数组,包含index=3

  • Python大数据用Numpy Array的原因解读

    目录 1.内存占用更小 2.速度更快.内置计算方法 Numpy 是Python科学计算的一个核心模块.它提供了非常高效的数组对象,以及用于处理这些数组对象的工具.一个Numpy数组由许多值组成,所有值的类型是相同的. Python的核心库提供了 List 列表.列表是最常见的Python数据类型之一,它可以调整大小并且包含不同类型的元素,非常方便. 那么List和Numpy Array到底有什么区别?为什么我们需要在大数据处理的时候使用Numpy Array?答案是性能. Numpy数据结构在以

  • 如何修改numpy array的数据类型

    目录 修改numpy array数据类型 1.numpy数据类型 2.改变numpy array数据类型 numpy数据类型说明及自动转换陷阱 1.数据类型的表示 2.构造ndarray时的dtype 3.不同数据类型之间的转换兼容性 4.numpy对python对象数据类型'O'的处理 修改numpy array数据类型 1.numpy数据类型 数据名称 说明 bool 布尔类型,true,false int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) in

随机推荐