1

我所拥有的是:

x = array([a, a, a, a, a, a],
          [b, b, b, b, b, b],
          [................],
          [z,z,z,z,z,z,z,z,])

我正在寻找一种方法:

一世。如何将此数组转换为一维数组 x = array[a,a,a,a,a,a,a,a,b,b,b,b,b,..,z,z,z] 和 a一维列表 x = [a,a,a,a,a,a,a,b,b,b,b,b,...,z,z,z]。

ii. 计算该数组的确切尺寸:我尝试使用 len(x[0]) 和 len(x) 来获取两个维度的坐标,但这种方式似乎有点骇人听闻。是否有任何内置函数来获取数组的维度?

注意:有些数组值是正整数,有些是浮点数,有些是负浮点数,有些是负整数。

提前谢谢了。

4

4 回答 4

2

np.ravel用于这个任务。
如果这是您想要的输出方式,只需调用列表构造函数。
.shape将分别为您提供行数和列数,但您实际上并不需要知道它们。

>>> import numpy as np
>>> a = np.random.random_integers(0, 9, (3, 4))
>>> a.shape
(3, 4)
>>> print a
[[9 5 1 8]
 [3 1 3 1]
 [3 9 6 6]]
>>> a.ravel()
array([9, 5, 1, 8, 3, 1, 3, 1, 3, 9, 6, 6])
>>> list(a.ravel())
[9, 5, 1, 8, 3, 1, 3, 1, 3, 9, 6, 6]
于 2012-09-18T07:33:35.757 回答
1

要从 ND 数组创建一维数组,请使用ndarray.flatten()

x = array([a, a, a, a, a, a],
      [b, b, b, b, b, b],
      [................],
      [z,z,z,z,z,z,z,z,])
x.flatten()

要从中获取列表,请使用ndarray.tolist()

xlist = x.tolist()

要获取数组的维度,请使用ndarray.shape

print x.shape
(4, 6)
于 2012-09-18T07:25:24.000 回答
1
  • 要将二维数组转换为一维数组,您可以使用np.ravel(a). 如果你想这样做到,你也可以使用a.shape=-1。该a.flatten方法将返回初始数组的副本,这很浪费。
  • 要将一维数组转换为列表,您可以使用list(a)a.tolist()。要将您的二维数组转换为平面列表,到目前为止更简单的是list(a.flat).flat返回一个“平面”迭代器)。请注意,a.tolist在二维数组上使用会给你一个列表列表,而使用list(a)会给你一个数组列表。
  • 用于a.shape获取a沿每个维度的大小,作为具有与维度一样多的元素的元组。请注意len(a)==a.shape[0]. 使用您的二维数组,len(a[0])=a.shape[1].
于 2012-09-18T08:18:36.193 回答
0

将数组合并成一个新数组:

newArray = array()
for y in x
  newArray += y

找到长度:

len(newArray)
于 2012-09-18T07:03:37.170 回答