1

私が持っているのは:

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

私は次の方法を探しています:

私。この配列を1D配列に変換する方法x=array [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)を試しましたが、この方法は少しハックのようです。配列の次元を取得するための組み込み関数はありますか?

注:配列値の一部は正の整数、一部は浮動小数点数、一部は負の浮動小数点数、一部は負の整数です。

よろしくお願いします。

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アレイから1Dアレイを作成するには、次を使用します。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
  • 2D配列を1D配列として変換するには、を使用できますnp.ravel(a)その場でそうしたい場合は、を使用することもできますa.shape=-1。このa.flattenメソッドは初期配列のコピーを返しますが、これは無駄です。
  • 1D配列をリストに変換するには、list(a)またはを使用できますa.tolist()。2D配列をフラットリストに変換するには、はるかに簡単ですlist(a.flat).flat「フラット」イテレータを返します)。a.tolist2D配列で使用するとリストのリストが表示され、を使用すると配列のリストが表示されることに注意してくださいlist(a)
  • ディメンションと同じ数の要素を持つタプルとして、各ディメンションに沿っa.shapeたサイズを取得するために使用します。aに注意してくださいlen(a)==a.shape[0]。2D配列を使用すると、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 に答える