python: numpy list to array and vstack

2024/11/13 8:37:30
from scipy.io.wavfile import read
filepath = glob.glob('*.wav')
rates = []
datas = []
for fp in filepath:rate, data = read(fp)rates.append(rate)datas.append(data)

I get a list 'datas' which is :

[array([0, 0, 0, ..., 0, 0, 0], dtype=int16), array([0, 0, 0, ..., 0, 0, 1], dtype=int16), array([0, 0, 0, ..., 0, 0, 0], dtype=int16),..., array([0, 0, 0, ..., 0, 0, 0], dtype=int16)]

and I use

new_array = numpy.vstack([datas])

to get the new_array :

[[array([0, 0, 0, ..., 0, 0, 0], dtype=int16)array([0, 0, 0, ..., 0, 0, 1], dtype=int16)array([0, 0, 0, ..., 0, 0, 0], dtype=int16)...array([0, 0, 0, ..., 0, 0, 0], dtype=int16)]]

But I really prefer one is :

(array([[ 0,  0,  0, ...,  0,  0,  0],[ 0,  0,  0, ...,  0,  0,  1],[ 0,  0,  0, ...,  0,  0,  0],...,        [ 0,  0,  0, ...,  0,  0,  0]], dtype=int16)

Which function should I use?

Thanks.

Answer

The following works for me, so either the elements of datas are not flat arrays like your question suggests, the potential rows have different lengths (this turned out to be the reason, see comments), or perhaps you are using an older version that has a problem with a 1-dimensional object in vstack? (although I think that is unlikely)

In [14]: datas = [np.asarray([0, 0, 0, 0, 0, 0]), np.asarray([0, 0, 0, 0, 0, 1])]In [15]: datas
Out[15]: [array([0, 0, 0, 0, 0, 0]), array([0, 0, 0, 0, 0, 1])]In [16]: datas[0].shape
Out[16]: (6,)In [17]: np.vstack(datas)
Out[17]:
array([[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1]])
https://en.xdnf.cn/q/72187.html

Related Q&A

Django Unittests Client Login: fails in test suite, but not in Shell

Im running a basic test of my home view. While logging the client in from the shell works, the same line of code fails to log the client in when using the test suite.What is the correct way to log the …

Icon overlay issue with Python

I found some examples and topics on this forum about the way to implement an icon overlay handler with Python 2.7 & the win32com package but it does not work for me and I dont understand why. I cre…

Comparing NumPy object references

I want to understand the NumPy behavior.When I try to get the reference of an inner array of a NumPy array, and then compare it to the object itself, I get as returned value False.Here is the example:I…

Does using django querysets in templates hit the database?

Do template value tags force django to hit the database when called against a non-context value? For example:{{ request.user.username }} Is the call to show the currently logged in users username. H…

how to randomly sample in 2D matrix in numpy

I have a 2d array/matrix like this, how would I randomly pick the value from this 2D matrix, for example getting value like [-62, 29.23]. I looked at the numpy.choice but it is built for 1d array.The f…

How to update figure in same window dynamically without opening and redrawing in new tab?

I am creating a 3D scatter plot based off a pandas dataframe, and then I want to re-draw it with slightly updated data whenever the user presses a button in my program. I almost have this functionality…

Serializing a C struct in Python and sending over a socket

Im trying to serializing the following C structstruct packet {int id;unsigned char *ce;unsigned char *syms; };in Python and send it over a socket. The number of elements pointed by ce and syms are know…

creating multiple audio streams of an icecast2 server using python-shout

I am trying to create a web radio server to stream 3 sources at once. I am using python to create a source client for icecast2 using the python-shout library. I am not too familiar with the language (p…

Custom Deployment to Azure Websites

I recently started using Gulp.js to package all my CSS and JavaScript into single files, which I then include in my web app. My web app is written in Python (using Flask).I obviously dont want to track…

Python - Gspread Request Error 401

Im currently making a Discord-bot that connects to a Google-spreadsheet (gspread). But after Ive been running it for a while it starts to hand out errors and it cant connect to my gspread anymore (unle…