我拥有的是:
x = array([a, a, a, a, a, a],
[b, b, b, b, b, b],
[................],
[z,z,z,z,z,z,z,z,])
我正在寻找一种方式:
我。如何将这个数组转换为一维数组x =数组[a,a,a,a,a,a,a,a,b,b,b,b,b,..,z,z,z]和a 1D列表x = [a,a,a,a,a,a,a,b,b,b,b,b,...,z,z,z]。
II。计算这个数组的确切维数:我尝试了len(x [0])和len(x)来获得两个维度坐标,但这种方式看起来有点像hackish。是否有任何内置函数来获取数组的尺寸?
注意:一些数组值是正整数,有些是浮点数,有些是负浮点数,有些是负整数。
非常感谢提前。
答案 0 :(得分: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]
答案 1 :(得分: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)
答案 2 :(得分:1)
np.ravel(a)
。如果您想到位,您还可以使用a.shape=-1
。 a.flatten
方法将返回初始数组的副本,这很浪费。list(a)
或a.tolist()
。要将2D数组转换为平面列表,到目前为止更简单的是list(a.flat)
(.flat
返回'flat'迭代器)。请注意,在2D数组上使用a.tolist
将为您提供列表列表,而使用list(a)
将为您提供数组列表。 a.shape
在每个维度上获取a
的大小,作为具有与维度一样多的元素的元组。请注意len(a)==a.shape[0]
。使用2D数组len(a[0])=a.shape[1]
。答案 3 :(得分:0)
将数组合并到一个新数组中:
newArray = array()
for y in x
newArray += y
找到长度:
len(newArray)