我正在尝试使用music21 python模块从MIDI文件中提取数据。我遇到的问题是当我尝试从作为n元组的音符(例如,第32音符三连音)获取音符持续时间的数据时。该模块通常将音符长度作为四分之一长度的一部分返回(例如四分音符是1.0,8是0.5等)。但是,对于三元组,它返回一个python Fraction对象(例如Fraction(1,12))。我有以下循环:
for note in notes_from_stream:
temp_arr = []
temp_arr.append(get_midi_representation(note))
temp_arr.append(note.duration.dots)
temp_arr.append(note.duration.quarterLength)
tup = float(note.duration.quarterLength.numerator) / (note.duration.quarterLength.denominator)
temp_arr.append(tup)
note_list_arr.append(temp_arr)
在每次迭代结束时,temp_arr被添加到note_list_arr中。循环结束后,我使用numpy.asarray()函数从note_list_arr创建一个新的2x2 numpy数组。所以,实际问题是在numpy数组中的所有数据之后我得到了以下内容:
[[128 0 Fraction(1, 12) 0.08333333333333333]
[128 0 Fraction(1, 24) 0.041666666666666664]]
这个问题是它包含了Fraction对象,但是如果我删除了将它放在那里的行(temp_arr.append(note.duration.quarterLength)
并且只留下计算该分数的实数值的那一行,我得到以下内容:
[[ 1.28000000e+02 0.00000000e+00 8.33333333e-02]
[ 1.28000000e+02 0.00000000e+00 4.16666667e-02]]
数组中的所有值都使用指数表示法转换为浮点数。我怎么能避免这个?
答案 0 :(得分:1)
的
foreach ( $extra_images as $extra_image ) {
// Download file to temp location
$tmp2 = download_url( $extra_image ) ;
// fix file name for query strings
preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $extra_image, $matches) ;
$file_array2['name'] = basename( $matches[0] ) ;
$file_array2['tmp_name'] = $tmp2 ;
$imgID = media_handle_sideload( $file_array2 , $post_id , 'desc' );
$imagearray[] = $imgID ;
}
$imgids = implode(' , ', $imagearray ) ;
$result = update_post_meta( $post_id, '_product_image_gallery', $imgids ) ;
是什么
dtype
我在猜[[128 0 Fraction(1, 12) 0.08333333333333333]
[128 0 Fraction(1, 24) 0.041666666666666664]]
。每个元素都是指向不同类型项的指针,一些整数,一些浮点数和一些object
。这几乎与嵌套列表相同。这是Fraction
试图将一组不同的对象放入一个数组中的结果。
numpy
看起来像dtype [[ 1.28000000e+02 0.00000000e+00 8.33333333e-02]
[ 1.28000000e+02 0.00000000e+00 4.16666667e-02]]
。整数和浮点数都存储并显示为浮点数。不要担心科学记数法;这正是显示器处理值范围的方式。它们是常规漂浮物。
第一个是float
数组,(n,4)
个音符,每个音符有4个值。
您可能已将创作编写为:
n