GVKun编程网logo

大量使用numpy.array(大量使用抗生素会造成什么结果)

30

在这里,我们将给大家分享关于大量使用numpy.array的知识,让您更了解大量使用抗生素会造成什么结果的本质,同时也会涉及到如何更有效地list(numpy_array)和numpy_array.t

在这里,我们将给大家分享关于大量使用numpy.array的知识,让您更了解大量使用抗生素会造成什么结果的本质,同时也会涉及到如何更有效地list(numpy_array)和numpy_array.tolist()之间的区别、NDArray 与 numpy.ndarray 互相转换方式、NumPy - Ndarray 对象、Numpy array 合并的内容。

本文目录一览:

大量使用numpy.array(大量使用抗生素会造成什么结果)

大量使用numpy.array(大量使用抗生素会造成什么结果)

如果尝试在numpy中创建具有大量维的数组,则会引发异常:

In [1]: import numpy as npIn [2]: a = np.zeros((1,) * 33)---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)<ipython-input-2-32dc30f6e439> in <module>()----> 1 a = np.zeros((1,) * 33)ValueError: sequence too large; must be smaller than 32

有没有简单的解决方法?

为什么numpy不允许创建此类数组的原因是什么?

答案1

小编典典

从NumPy源代码:

/* * There are several places in the code where an array of dimensions * is allocated statically.  This is the size of that static * allocation. * * The array creation itself could have arbitrary dimensions but all * the places where static allocation is used would need to be changed * to dynamic (including inside of several structures) */#define NPY_MAXDIMS 32#define NPY_MAXARGS 32

您可以更改这些定义,并从源代码构建适合您需求的不兼容版本。

list(numpy_array)和numpy_array.tolist()之间的区别

list(numpy_array)和numpy_array.tolist()之间的区别

list()numpy数组上应用与调用之间有什么区别tolist()

我正在检查两个输出的类型,它们都显示出我得到的结果是list,但是输出看起来并不完全相同。是因为这list()不是numpy特定于方法的方法(即可以应用于任何序列)并且tolist()
numpy特定于方法的,只是在这种情况下,它们返回的是相同的东西?

输入:

points = numpy.random.random((5,2))
print "Points type: " + str(type(points))

输出:

Points type: <type 'numpy.ndarray'>

输入:

points_list = list(points)
print points_list
print "Points_list type: " + str(type(points_list))

输出:

[array([ 0.15920058,0.60861985]),array([ 0.77414769,0.15181626]),array([ 0.99826806,0.96183059]),array([ 0.61830768,0.20023207]),array([ 0.28422605,0.94669097])]
Points_list type: 'type 'list''

输入:

points_list_alt = points.tolist()
print points_list_alt
print "Points_list_alt type: " + str(type(points_list_alt))

输出:

[[0.15920057939342847,0.6086198537462152],[0.7741476852713319,0.15181626186774055],[0.9982680580550761,0.9618305944859845],[0.6183076760274226,0.20023206937408744],[0.28422604852159594,0.9466909685812506]]

Points_list_alt type: 'type 'list''

NDArray 与 numpy.ndarray 互相转换方式

NDArray 与 numpy.ndarray 互相转换方式

NDArray与numpy.ndarray互相转换

import numpy as np
from mxnet import nd
# numpy.ndarray 变 mx.NDArray
np_val = np.array([1, 2, 3])   # 定义一个numpy.ndarray
nd_val = nd.array(np_val)   # 深复制 
# NDArray 变 numpy.ndarray
np_val_ = nd_val.asnumpy()

NumPy与ndarray简介

NumPy简介

NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括:

  • 一个强大的N维数组对象ndrray;
  • 比较成熟的(广播)函数库;
  • 用于整合C/C++和Fortran代码的工具包;
  • 实用的线性代数、傅里叶变换和随机数生成函数

NumPy的优点:

  • 对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多;
  • NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的;
  • NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多

当然,NumPy也有其不足之处,由于NumPy使用内存映射文件以达到最优的数据读写性能,而内存的大小限制了其对TB级大文件的处理;此外,NumPy数组的通用性不及Python提供的list容器。因此,在科学计算之外的领域,NumPy的优势也就不那么明显。

数组ndarray

NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器,该对象由两部分组成:

  • 实际的数据;
  • 描述这些数据的元数据;

大部分的数组操作仅仅是修改元数据部分,而不改变其底层的实际数据。数组的维数称为秩,简单来说就是如果你需要获取数组中一个特定元素所需的坐标数,如a是一个2×3×4的矩阵,你索引其中的一个元素必须给定三个坐标a[x,y,z],故它的维数就是3。而轴可以理解为一种对数组空间的分割,以数组a为例,如果我们以0为轴,那么a可以看成是一个由两个元素构成的数组,其中每个元素都是一个3×4的数组。

我们可以直接将数组看作一种新的数据类型,就像list、tuple、dict一样,但数组中所有元素的类型必须是一致的,Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy中添加了许多其他的数据类型,如bool、inti、int64、float32、complex64等。同时,它也有许多其特有的属性和方法。

常用ndarray属性:

dtype 描述数组元素的类型

shape 以tuple表示的数组形状

ndim 数组的维度

size 数组中元素的个数

itemsize 数组中的元素在内存所占字节数

T 数组的转置

flat 返回一个数组的迭代器,对flat赋值将导致整个数组的元素被覆盖

real/imag 给出复数数组的实部/虚部

nbytes 数组占用的存储空间

常用ndarray方法:

  
reshape(…)返回一个给定shape的数组的副本
resize(…)返回给定shape的数组,原数组shape发生改变
flatten()/ravel()返回展平数组,原数组不改变
astype(dtype)返回指定元素类型的数组副本
fill()将数组元素全部设定为一个标量值
sum/Prod()计算所有数组元素的和/积
mean()/var()/std()返回数组元素的均值/方差/标准差
max()/min()/ptp()/median()返回数组元素的最大值/最小值/取值范围/中位数
argmax()/argmin()返回最大值/最小值的索引
sort()对数组进行排序,axis指定排序的轴;kind指定排序算法,默认是快速排序
view()/copy()view创造一个新的数组对象指向同一数据;copy是深复制
tolist()将数组完全转为列表,注意与直接使用list(array)的区别
compress()返回满足条件的元素构成的数组

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

您可能感兴趣的文章:
  • Python numpy中的ndarray介绍
  • numpy中的ndarray方法和属性详解
  • Python中Numpy ndarray的使用详解

NumPy - Ndarray 对象

NumPy - Ndarray 对象

NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。ndarray中的每个元素在内存中使用相同大小的块。 ndarray中的每个元素是数据类型对象的对象(称为 dtype)。

ndarray对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。 下图显示了ndarray,数据类型对象(dtype)和数组标量类型之间的关系。

 基本的ndarray是使用 NumPy 中的数组函数创建的,如下所示:

 numpy.array

 它从任何暴露数组接口的对象,或从返回数组的任何方法创建一个ndarray。

1 numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
View Code

  参数:

    object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。

    dtype 数组的所需数据类型,可选。

    copy 可选,默认为true,对象是否被复制。

    order C(按行)、F(按列)或A(任意,默认)。

    subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。

    ndimin 指定返回数组的最小维数。

 示例:

  

 

Numpy array 合并

Numpy array 合并

1、np.vstack () :垂直合并

>>> import numpy as np
>>> A = np.array([1,1,1])
>>> B = np.array([2,2,2])
>>> print(np.vstack((A,B))) # vertical stack,属于一种上下合并,即对括号中的两个整体进行对应操作
[[1 1 1]
 [2 2 2]]

>>> C = np.vstack((A,B))
>>> print(A.shape,C.shape)
(3,) (2, 3)

2、np.hstack ():水平合并

>>> D = np.hstack((A,B)) # horizontal stack,即左右合并
>>> print(D)
[1 1 1 2 2 2]
>>> print(A.shape,D.shape)
(3,) (6,)

3、np.newaxis (): 转置

>>> print(A[np.newaxis,:])
[[1 1 1]]
>>> print(A[np.newaxis,:].shape)
(1, 3)
>>> print(A[:,np.newaxis])
[[1]
 [1]
 [1]]
>>> print(A[:,np.newaxis].shape)
(3, 1)


>>> A = np.array([1,1,1])[:,np.newaxis]
>>> B = np.array([2,2,2])[:,np.newaxis]
>>> C = np.vstack((A,B))   # vertical stack
>>> D = np.hstack((A,B))   # horizontal stack
>>> print(D)
[[1 2]
 [1 2]
 [1 2]]
>>> print(A.shape,D.shape)
(3, 1) (3, 2)

4、np.concatenate (): 针对多个矩阵或序列的合并操作

#axis参数很好的控制了矩阵的纵向或是横向打印,相比较vstack和hstack函数显得更加
>>> C = np.concatenate((A,B,B,A),axis=0)
>>> print(C)
[[1]
 [1]
 [1]
 [2]
 [2]
 [2]
 [2]
 [2]
 [2]
 [1]
 [1]
 [1]]

>>> D = np.concatenate((A,B,B,A),axis=1)
>>> print(D)
[[1 2 2 1]
 [1 2 2 1]
 [1 2 2 1]]

 

今天的关于大量使用numpy.array大量使用抗生素会造成什么结果的分享已经结束,谢谢您的关注,如果想了解更多关于list(numpy_array)和numpy_array.tolist()之间的区别、NDArray 与 numpy.ndarray 互相转换方式、NumPy - Ndarray 对象、Numpy array 合并的相关知识,请在本站进行查询。

本文标签: