首选排序并将1D bytearray转换为Numpy nd-array?

时间:2017-03-10 05:17:59

标签: python arrays numpy multidimensional-array

我目前正在开发一个帮助程序类,用于将数据从Java ND-Array传输到Python numpy nd-array。 Java数组使用ND4J,我能够确定ND4J INDArray的形状,步幅和行/列排序。

Py4j允许我本地从JVM传回bytearray。但是,我对numpy不太熟悉,而且我不太清楚它是否有row or column ordering的优先权以及如果我给它bytearray代表一个np.array(bytearray, shape)我怎么能提供形状信息1D数据数据。

我能找到的最接近的问题是:Quickest way to convert 1D byte array to 2D numpy array

但是,它并没有告诉我很多提供明确的形状信息 - 它只适用于RGB图像数据。

所以我的问题是,我怎样才能做double这样的事情?如何知道numpy的首选顺序,以便我可以准备传入的数据?

修改

半回答了我的问题。看起来numpy确实允许通过其许多数组创建方法的额外参数进行特定排序:https://docs.scipy.org/doc/numpy/reference/routines.array-creation.html

编辑2

了解更多,我需要确保bytearray(从byte []转换)是正确的数据类型。它几乎总是float,所以我应该传递numpy.float64类型还是SELECT strftime('%H:%M:%S',start_date) FROM table LIMIT 100;

1 个答案:

答案 0 :(得分:1)

你能做的是

np.array(bytearray).reshape(shape)

其中np.array()的输出是一维数组,然后您将其重新整形为您想要的形状。请注意,重塑不会更改内存中的顺序,只会更改数据的查看方式。

当线性迭代默认的C风格NumPy数组the last dimension of your array will iterate the fastest时,这意味着

a[0,0,0]
a[0,0,1]

在内存中彼此相邻,而

a[0,0,0]
a[0,1,0]

不是。知道了这一点,你应该能够找出shape参数。

第三,dtype=floatdtype=np.float64可互换,您可以通过比较确认

print np.arange(1, dtype=float).dtype
print np.arange(1, dtype=np.float64).dtype