我在创建numpy数组的numpy数组时遇到问题。我将在一个循环中创建它:
a=np.array([])
while(...):
...
b= //a numpy array generated
a=np.append(a,b)
...
所需结果:
[[1,5,3], [9,10,1], ..., [4,8,6]]
实际结果:
[1,5,3,9,10,1,... 4,8,6]
可能吗?我不知道数组的最终尺寸,因此无法使用固定尺寸对其进行初始化。
永远不要numpy
在循环中追加数组:与基本的Python相比,这是NumPy非常不擅长的一项操作。这是因为您要对每个数据进行完整复制append
,这将花费您二次时间。
相反,只需将您的数组附加到Python列表中,并在最后进行转换即可;结果更简单,更快捷:
a = []
while ...:
b = ... # NumPy array
a.append(b)
a = np.asarray(a)
至于为什么您的代码不起作用:np.append
根本不表现list.append
出来。特别是,追加时不会创建新尺寸。您将必须创建具有二维的初始数组,然后附加一个显式的轴参数。
问题内容: 我要执行以下操作: 不使用循环。最后,A和B包含相同的信息,但索引不同。 我必须指出,尺寸1,2,3和4可以相同或不同。因此,numpy.reshape()似乎很困难。 问题答案: 请注意:Jaime的答案更好。NumPy正是为此目的而提供的。 在numpy中执行此操作的规范方法是使用的可选置换参数。在您的情况下,从i转到,排列是,例如: 或者使用np.einsum ; 这可能是其预期
问题内容: 使用simplejson序列化numpy数组的最有效方法是什么? 问题答案: 我将使用它作为最 方便的 方法(如果我仍在使用,这意味着被Python 2.5或更早版本所卡住; 2.6和更高版本具有一个标准库模块,它们的工作方式相同,所以我当然会使用它如果使用的Python版本支持它;-)。 为了寻求更高的效率,您 可以将 json.JSONEncoder 子类化(在中;我不知道旧版本是
主要内容:遍历顺序,指定遍历顺序,修改数组元素值,外部循环使用,迭代多个数组NumPy 提供了一个 nditer 迭代器对象,它可以配合 for 循环完成对数组元素的遍历。 下面看一组示例,使用 arange() 函数创建一个 3*4 数组,并使用 nditer 生成迭代器对象。 示例1: 输出结果: 0 5 10 15 20 25 30 35 40 45 50 55 遍历顺序 在内存中,Numpy 数组提供了两种存储数据的方式,分别是 C-order(行优先顺序)与 F
主要内容:numpy.empty(),numpy.zeros(),numpy.ones(),numpy.asarray(),numpy.frombuffer(),numpy.fromiter()在《 NumPy Ndarray对象》一节,介绍了创建 ndarray 数组的基本方法,除了使用 array() 方法外,NumPy 还提供了其他创建 ndarray 数组的方法。本节对这些常用方法做简单介绍。 numpy.empty() numpy.empty() 创建未初始化的数组,可以指定创建数组的
主要内容:ndarray.shape,ndarray.reshape(),ndarray.ndim,ndarray.itemsize,ndarray.flags本节介绍 Numpy 数组的常用属性。 ndarray.shape shape 属性的返回值一个由数组维度构成的元组,比如 2 行 3 列的二维数组可以表示为 ,该属性可以用来调整数组维度的大小。 示例如下,输出了数组的维度: 输出结果: (2,3) 通过 shape 属性修改数组的形状大小: 输出结果: ndarray.reshape
Numpy 中包含了一些函数用于处理数组,本节重点介绍如下几类: 修改数组形状; 翻转数组; 格式转换。 1. 修改数组形状 常用的修改数组形状的函数有: 函数 说明 reshape 不改变数据的条件下修改形状 flat 数组元素迭代器 flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组 ravel 返回展开数组 1.1 reshape numpy.reshape 函数可以在不改变